#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void fork3()
{
printf("\n [%d] L0 \n" , getpid() );
fork();
printf("\n [%d] L1 \n" , getpid() );
fork();
printf("\n [%d] Bye \n", getpid() );
}
int main ()
{
fork3();
return 0;
}
输出:
[2880] L0
[2880] L1
[2881] L1
[2880] Bye
[2882] Bye
[2881] Bye
[2883] Bye
最后打印是多余的!它从哪里来?还有一件事我不明白,如果有人解释会好吗?
最佳答案
在第一次调用fork
之后,两个进程正在运行该程序,这两个进程都调用fork
创建另外两个进程。然后,所有四个进程都调用printf
。
关于c - 有多个 fork 和额外的打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47562137/