孤儿进程,由internet进程进行收尸。收尸都是父进程给子进程收尸
孤儿进程,目的:避免父进程在为子进程收尸的时候阻塞,提高进程执行效率。
孤儿进程模型:
#include <stdio.h>
#include <fcntl.h>
int main(void)
{
pid_t pid;
long i = 10000000;
pid = fork();
if(pid == 0)
{
pid = fork();
if(pid == 0) //孙子进程,孤儿进程,由internet进程进行收尸
{
while(i--)
{
printf("this is a child\n");
}
}
if(pid > 0) //子进程
{
usleep(10); //避免儿子进程挂掉,导致孙子进程未创建成功
exit(0);
}
}
if(pid > 0) //父进程,有bash进行收尸
{
wait(NULL); //为了给儿子收尸,一次收一个
//wait可以获取到子进程的返回值,及exit(a)中a的值
//int status;
//wait(&status);
//printf("%d\n", status>>8); //右移八位输出
while(1)
{
printf("this is parent\n");
}
}
return 0;
}