您的位置:首页 > 其它

僵尸进程和孤儿进程

2018-01-01 16:12 197 查看

僵尸进程

在创建子进程之后,父进程一直在忙,没有时间阅读子进程状态,导致子进程完成自己的任务之后无法退出,一直挂机,当进程退出父进程(使用wait()系统调用)没有没有读取到子进程退出的返回代码时就会产生僵尸进程。


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main()
{
size_t pid = getpid();
size_t id = fork();
if(id<0)
{
printf("fork error,return code is:%d\n", errno);
return 2;
}
else if(0 == id)
{
printf("child pid is:%d\n", getpid());
exit(3);
}
else
{
printf("father pid is:%d return pid is:%d\n", getpid(), id);
sleep(1);

}
return 0;
}




孤儿进程

一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main()
{
size_t id = fork();
if(id<0)
{
printf("fork error");
}
else if(0 == id)
{
while(1)
{
printf("child pid is:%d parent pid is:%d\n", getpid(), getppid);
sleep(3);
}
}
else
{
printf("father pid is:%d child pid is:%d\n", getppid(), getpid());
exit(1);
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: