Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这些fork()语句的进程树是什么样子的?_C_Linux_Fork - Fatal编程技术网

C 这些fork()语句的进程树是什么样子的?

C 这些fork()语句的进程树是什么样子的?,c,linux,fork,C,Linux,Fork,有人能告诉我这个c代码将生成什么进程树吗 #include <unistd.h> int main(void) { fork() || (fork() && fork()); return 0; } 这可能是一个家庭作业。然而,这很有趣 首先: fork为子级返回0 fork为父级返回一个不等于0的值 因此,在服务器中,逻辑or | | unequals 0的第一部分和表达式的其余部分不会在父级上执行:对fork的一次调用 在子级中,第一部分为0,因此

有人能告诉我这个c代码将生成什么进程树吗

#include <unistd.h>

int main(void)
{
   fork() || (fork() && fork());
   return 0;
}

这可能是一个家庭作业。然而,这很有趣

首先:

fork为子级返回0

fork为父级返回一个不等于0的值

因此,在服务器中,逻辑or | | unequals 0的第一部分和表达式的其余部分不会在父级上执行:对fork的一次调用

在子级中,第一部分为0,因此执行rest fork&&fork。因此,在这个子对象上,第一个fork返回一个不等于零的值,从而对第二个部分求值。因此有两个新孩子。这两个函数的返回值均为0,使计算短路

未经测试,在Safari中键入。

从man fork开始,然后是单个fork。只有在理解它之后,才能继续进行更复杂的示例。