【发布时间】:2020-02-29 13:21:25
【问题描述】:
在 C 中,fork() 函数将为父进程返回一个非零值,为子进程返回零值。
当使用 && 或 || 等逻辑表达式时,当我试图了解这些代码如何工作时,我感到很困惑。如何通过图论在树中显示它们?代码是如何执行的?
#include <stdio.h>
#include <unistd.h>
int main()
{
fork();
fork() && fork(); // or fork() || fork()
printf("forked\n");
return 0;
}
【问题讨论】:
-
至于您的问题,请考虑逻辑运算符
&&和||使用的short-circuit evaluation,以及更多fork返回的内容,以及“false”和“ true" 值。 -
fork() && fork():考虑到&&是短路的。执行此操作的进程调用两者。它的第一个子进程(第一个接收 0)不执行第二个。 (第一个和第二个子进程以printf()继续。) -
fork()也可以在出错时返回 -1(非零),因此请务必考虑这一点。
标签: c multithreading tree fork