【发布时间】:2016-09-24 02:29:37
【问题描述】:
我在这里看到了很多 fork in for 循环的例子,但没有太多说明它是如何工作的。让我们以How to use Fork() to create only 2 child processes? 的答案中的这个简单示例为例。
for (i = 0; i < n; ++i) {
pid = fork();
if (pid) {
continue;
} else if (pid == 0) {
break;
} else {
printf("fork error\n");
exit(1);
}
}
我见过的大多数示例都遵循这种通用格式。但我不明白的是,这如何防止子进程也分叉?据我了解,每个被创造出来的孩子也必须经历这个循环。但是 fork() 在 for 循环的最开始被调用,然后发生 3 次比较。有人可以解释一下,即使孩子们似乎调用了 fork(),这个 for 循环仍然确保只有父母可以创建孩子?
【问题讨论】:
-
第一个
if条件应该是(pid > 0) -
你不应该改变你不理解的东西。
if/else if/else与您链接的问题中的if/else if/else不相同。
标签: c linux function fork systems-programming