有谁能解释我这是如何工作的?
如果我的代码中有类似的东西
int pids[N];
for(int i = 0; i < N; i++){
pids[i] = fork();
if(pids[i]==0){
//do something
break;
}
}
Run Code Online (Sandbox Code Playgroud)
难道我不会创造N个孩子,然后在每个孩子中再次出现N个孩子并最终成为一个循环吗?
来自http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html(强调我的):
创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令.
因此,fork()创建一个子节点,并且子节点不会从循环的开头开始:它从调用之后的指令开始fork,即从if(pids[i]==0){子节点为真的指令开始.然后它会做某事,然后break.Break意味着它退出for循环,因此子进程不再创建进程.
因此,父亲创造了N个孩子,而每个孩子都做了工作并且从循环中断开而不再创造孩子.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |