{
    if(fork() && fork())
    {
        fork();
    }

    if(fork() || fork())
    {
        fork();
    }

    printf("hello");
    return 0;
}


我不知道fork()在这里的行为以及打几次你好。
我只知道fork() && fork()将为1个父级生成总共3个进程,同样,fork() || fork()将为1个父级生成3个进程。

在第一个if条件之后,将创建3个进程,只有父进程会进入if块。现在共有4个过程。现在,如何继续进行下去,我对此完全一无所知?

如果可能,请显示树形图。

最佳答案

树的可视化!

if(fork() && fork())
{
    fork();
}


operating-system - fork()如何在这里工作?-LMLPHP

现在我们有4个进程在系统中运行; P,C1,C2和C3。

并且每个将在下一个if块执行。

if(fork() || fork())
{
    fork();
}


operating-system - fork()如何在这里工作?-LMLPHP

总共,我们将在系统中运行4 * 5 = 20个进程,并且每个进程都会显示“ Hello”。

10-04 22:08
查看更多