我想模拟资源泄漏

康纳

我可以利用哪些OS系统调用来“模拟”和减轻流程创建泄漏?例如,叉炸弹类似于我想要的炸弹,但是叉炸弹以指数方式增加了进程。我想要的是系统调用或框架构想,该构架会随着时间的推移缓慢泄漏进程,以便随着时间的推移可以更容易地检测到它,并且对于现实生活中的情况更现实。

安迪·道尔顿

如果您想要一个缓慢的进程泄漏,则可能是这样的事情:

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    for (;;) {
        pid_t pid = fork();  // (1)

        if (pid < 0) {
            perror("fork");
            return 1;
        }

        if (pid > 0) {      // (2)
            for (;;) {
                sleep(60 * 60);
            }
        }

        // pid == 0 : child   (3) keep looping
        usleep(1000000); // 1 second
    }
}

该程序反复:

  1. 创建一个新的过程
  2. 如果该进程是父进程,那么它将进入无限睡眠循环
  3. 如果该进程是子进程(新进程),则它将休眠一秒钟,然后继续循环。该过程将重复以上过程。

这样,您就可以从process开始AA创建B,然后A进入无限睡眠循环。B继续循环并创建C,然后B进入无限睡眠循环。C继续循环并创建D,然后C进入无限睡眠循环,…随着时间的推移,您每秒将获得一个新进程。如果程序运行足够长的时间,fork()它将最终由于资源耗尽而失败,从而使前面的所有进程无限休眠。

如果希望泄漏进行得更快,则可以减小传递给该usleep()函数的值

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章