创建了多少个进程

时间:2017-09-22 03:48:49

标签: c unix process fork

创建了多少个进程?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(){
    int i;
    for (i = 0; i < 4; i++){
        fork();
    }
    return 0;
}

我认为创建了32个进程,但我想仔细检查我的逻辑是否合理。第一个进程每个创建4个进程,i值为0.这四个进程然后每个进程创建3个进程,值为i值为1.这3个进程每个进程再创建2个进程,其中i值为2.然后,这2个过程再创建一个i值为3的过程。

(4 + 3 + 3 + 3 + 3 + 2 + 2 + 2 + 1 + 1)+1 = 32

加号是第一个过程。

这听起来不错吗?感谢

2 个答案:

答案 0 :(得分:0)

据我所知,对于 N fork语句,形成的进程数 2 ^ N 。有关其工作原理的详细信息,已经得到了解答在下面给出的链接中:
Visually what happens to fork() in a For Loop

答案 1 :(得分:0)

2^N-1对于第一次迭代,将只创建一个子项,从2次迭代开始,fork将创建2^N Childs。

将会创建类似的东西:

                  1 
            2             2
         3    3        3    3
       4 4  4  4     4  4  4  4