Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 创建了多少个进程_C_Unix_Process_Fork - Fatal编程技术网

C 创建了多少个进程

C 创建了多少个进程,c,unix,process,fork,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; } #包括 #包括 #包括 int main(){ int i; 对于(i=0;i

创建了多少个进程

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

int main(){
    int i;
    for (i = 0; i < 4; i++){
        fork();
    }
    return 0;
}
#包括
#包括
#包括
int main(){
int i;
对于(i=0;i<4;i++){
fork();
}
返回0;
}
我认为创建了32个进程,但我想再次检查我的逻辑是否正确。第一个进程分别创建4个进程,i值为0。然后,这四个进程分别创建3个以上的进程,i值为1。然后,这3个进程分别创建另外2个进程,i值为2。然后,这两个进程分别创建一个i值为3的多进程

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

加号1用于第一个过程


这听起来对吗?感谢据我所知的Nfork语句,形成的进程数为2^N。有关其工作原理的更多详细信息,已在下面给出的链接中回答:

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

将创建类似的内容:


我不认为你把一个
printf(“Hello\n”)
推到了某个地方,然后才开始数数?@WhozCraig我是这么做的,但是如果我把printf放在叉子前面,我得到了15,之后,31。我不知道这有什么关系。将它放在后面可以确保已启动的进程在控制循环和后续条件测试中的进程增量之前打印。如果将它放在前面,将在每个新流程的每个新迭代中跳过该步骤一次。为什么您认为我对最年长的流程创建的所有4个子流程的值都为零?在我看来,我的价值在每个孩子身上都是不同的。
                  1 
            2             2
         3    3        3    3
       4 4  4  4     4  4  4  4