我正在学习 Linux 中的进程管理,并尝试实现以下 C 程序,其输出打印了 15 个 PID(4 个唯一 PID)。我试图弄清楚进程家族树,但它真的没有帮助我理解为什么 PID 被打印了这么多次。我浏览了几个链接,包括http://u.cs.biu.ac.il/~linraz/os/OS2.pdf,http://www.ibm.com/developerworks/aix/library/au-unixprocess.html , fork() 之后谁先执行:parent 还是 child?. 但是,我找不到解决方案。如果有人帮助我理解这个问题,那将是非常有帮助的。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
printf ( "Parent:%d Child: %d\n",getppid(),getpid()); // To print the PIDs of the parent process and the child process
fork(); //System call to spawn a child process
printf ( "Parent:%d Child: %d\n",getppid(),getpid());
fork();
printf ( "Parent:%d Child: %d\n",getppid(),getpid());
fork();
printf ( "Parent:%d Child: %d\n",getppid(),getpid());
return 0;
}