linux下如何编程产生10个僵尸进程

发布网友

我来回答

1个回答

热心网友

#include <stdio.h>

#include <unistd.h>
#include <errno.h>
#include <stdlib.h>

int main()
{

int i;

pid_t pid;
for (i = 0; i < 10; ++i)
{

pid = fork();
switch(pid)
{
case -1:
perror("fork");
exit(-1);
case 0: //child
printf("I am child");
exit(0);

default:
break;

}
}

while (1)
{
sleep(1);

printf("I am parent\n");

}
return 0; //will never reach here

}
这段程序就可以产生10个僵尸进程,编译执行后ps -ef查看,<defunct>就表示僵尸进程。原理是产生子进程之后它只打印一句话就退出,而父进程最终进入while无限循环,所以不退出,并且它没有调用wait()或者waitpid()函数清理子进程,所以子进程全部成为僵尸进程;如果父进程退出,那么不会产生僵尸进程,因为子进程被过继给1号进程(init进程),init进程负责清理子进程。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com