我在這裏看到了很多for循環中分叉的例子,但沒有太多說明它是如何做到的。讓我們以How to use Fork() to create only 2 child processes?的答案爲例,使用這個簡單的例子。在for循環澄清中分叉
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)' – ensc
你不應該改變你不明白的東西。 'if/else if/else'與您鏈接的問題中的'if/else if/else'不同*。 – user3386109