fork中的fork()系统调用

Ani*_*rya 3 c unix fork

    #include <stdio.h>
    #include <unistd.h>
    int main()
    {
       fork();
       fork() && fork() || fork();
       fork();

     printf("forked\n");
     return 0;
    }
Run Code Online (Sandbox Code Playgroud)

难以理解如何计算执行程序后产生的进程数?帮我看看.

平台--UBUNTU 10.04

Dan*_*her 10

假设没有任何分叉失败,让我们按照fork-tree

叉子();

现在我们有两个过程,到目前为止,无论是谁的孩子和谁是父母,都称他们为p1和p2

叉子()

这两个进程都产生了另一个子进程,所以我们有4个进程,其中两个进程(p3,p4)结果为零,其他两个进程(p1和p2)非零

   && fork()
Run Code Online (Sandbox Code Playgroud)

p1和p2再次分叉,给出p5和p6,共有6个进程.在p1和p2中,&&计算结果为true,因此它们不再在此行中进行分叉.对于p3,p4,p5,p6,&&求值为false,因此它们是fork

              || fork();
Run Code Online (Sandbox Code Playgroud)

在这里,产生了四个新的过程,总共6 + 4 = 10.

叉子();

10个进程中的每一个再次分叉,产生20个.