为什么子级的getppid()返回1
我正在运行程序
#include<stdio.h>#include <unistd.h>
main()
{
pid_t pid, ppid;
printf("Hello World1\n");
pid=fork();
if(pid==0)
{
printf("I am the child\n");
printf("The PID of child is %d\n",getpid());
printf("The PID of parent of child is %d\n",getppid());
}
else
{
printf("I am the parent\n");
printf("The PID of parent is %d\n",getpid());
printf("The PID of parent of parent is %d\n",getppid());
}
}
我得到的输出是。
$ ./a.out Hello World1
I am the parent
The PID of parent is 3071
The PID of parent of parent is 2456
I am the child
The PID of child is 3072
The PID of parent of child is 1
我不明白这条线
子女的父母的PID为1
应该是3071?
回答:
因为在孩子要求其父母的pid之前,父进程已完成。
进程完成后,其所有子级都将重新分配为init进程的子级,其pid为1。
尝试使用wait()
父母的代码来等待孩子执行。然后,它应该会按预期工作。
以上是 为什么子级的getppid()返回1 的全部内容, 来源链接: utcz.com/qa/416128.html