创建了多少个进程?
#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
加号是第一个过程。
这听起来不错吗?感谢
答案 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