我可以利用哪些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
}
}
该程序反复:
这样,您就可以从process开始A
。A
创建B
,然后A
进入无限睡眠循环。B
继续循环并创建C
,然后B
进入无限睡眠循环。C
继续循环并创建D,然后C
进入无限睡眠循环,…随着时间的推移,您每秒将获得一个新进程。如果程序运行足够长的时间,fork()
它将最终由于资源耗尽而失败,从而使前面的所有进程无限休眠。
如果希望泄漏进行得更快,则可以减小传递给该usleep()
函数的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句