#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/

10-11 01:28
查看更多