#include
#include
#include
int main()
{
pid_t pid,pid1;
pid=fork();
pid1=fork();
sleep(1);
if(pid>0)
{
if(pid1>0)
printf("This is the parent process,my pid is %d/n",getpid());
else
printf("This is the son2 process,my pid is %d,my father is %d/n",getpid(),getppid());
}
else
{
if(pid1>0)
printf("This is the son1 process,my pid is %d,my father is %d/n",getpid(),getppid());
else
printf("This is the grandson process ,my pid is %d,my father is %d/n",getpid(),getppid());
}
exit(0);
}
运行结果如下:
This is the parent process,my pid is 2772
This is the son2 process,my pid is 2774,my father is 1
This is the son1 process,my pid is 2773,my father is 1
This is the grandson process ,my pid is 2775,my father is 1
再一次运行结果:
This is the parent process,my pid is 2787
This is the son1 process,my pid is 2788,my father is 2787
This is the grandson process ,my pid is 2790,my father is 1
This is the son2 process,my pid is 2789,my father is 1
由于父进程先于子进程结束,所以将子进程过继给init进程,就是1号进程。