逻辑运算符中的fork()是如何执行的? “Hi”打印了多​​少次?如何?

逻辑运算符中的fork()是如何执行的? “Hi”打印了多​​少次?如何?
#include <stdio.h>
#include <unistd.h>

int main()
{
(fork() && fork()) || (fork() && fork());
printf("Hi...\n");
return 0;
}

答案1

您知道子项fork返回值0,父项返回非零值。它变得相当复杂,但您可以勾画出进程如何分叉的树。

or如果第一个参数是true,则跳过第二个参数的计算,因为在这种情况下,结果已知为trueand如果第一个参数是 ,则跳过第二个参数,false因为在这种情况下,结果已知为false。每次fork调用时,都会存在两个具有不同调用结果的进程实例。因此,在某些子流程中,某些 fork 会被调用,但其他的不会被调用。

草图(黄色表示分叉线已完成,并且执行到下一行)。 在此输入图像描述

相关内容