#include<stdio.h>
#include<unistd.h>
int main()
{
int i;
for(i=0;i<4;i++)
fork();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题:包括初始父进程,程序创建了多少进程?
我认为这个答案是1 + 4 = 5,1个父进程和4个子进程,我是对的吗?
谢谢
for(i=0;i<4;i++)
fork();
Run Code Online (Sandbox Code Playgroud)
这段代码等同于:
fork();
fork();
fork();
fork();
Run Code Online (Sandbox Code Playgroud)
让我们说这个过程从p0开始.流程图如下所示:

上面的图像说明了这一切,当第一个fork()被执行时,它会创建一个新进程,并留下三个fork()来执行.现在,这里存在一个父线程和一个子线程来执行另外三个fork()语句.因此,子进程p1将创建p5,p6和p7,父进程将创建p2,p3和p4.在创建了p2之后,需要为执行第二个fork()语句后创建的子线程p2执行两个fork().通过这种方式,创建了这个父子进程.
| 归档时间: |
|
| 查看次数: |
24317 次 |
| 最近记录: |