#include
#include
#include
#include
int main(int argc, const char *argv[])
{
pid_t fo=0;
fo = fork();
if(fo <0) //打开进程失败
{
perror("fork");
return -1;
}
if(fo==0) //子进程
{
pid_t fo_1=fork(); //创建子子进程
if(fo_1 <0) //打开进程失败
{
perror("fork");
return -1;
}
else if(fo_1==0)//子子进程
{
printf("准备关掉子子进程,即将形成僵尸进程\n");
exit(0);
}
else if(fo_1>0) //子进程
{
sleep(13);
if(getppid()==1)
{
printf("是孤儿进程\n");
}
exit(0);
}
}
if(fo>0) ///父进程
{
sleep(8);
printf("父进程准备结束,子进程不结束,子进程即将成为孤儿进程\n");
exit(0);
}
return 0;
}