#include <stdio.h>
int main(void)
{
fork();
fork();
printf("ppid %d pid %d\n", getppid(), getpid());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以上代码有时会打印出来
$ ./a.out
ppid 3389 pid 3883
ppid 3883 pid 3885
ppid 1 pid 3884
ppid 3884 pid 3886
Run Code Online (Sandbox Code Playgroud)
为什么流程3884的ppid 1?它不应该是3883吗?
Jam*_*arp 12
我猜父进程已经完成运行并在第三个子进行父进程PID检查时退出.这将导致孩子重新成为父母init,其过程ID为1.