一个进程执行以下代码
for (i = 0; i < n; i++) fork();
创建的子进程总数为
(A) n
(B) 2 n – 1
(C) 2 n
(D) 2 (n+1) – 1答案:(乙)
解释:
F0 // There will be 1 child process created by first fork
/ \
F1 F1 // There will be 2 child processes created by second fork
/ \ / \
F2 F2 F2 F2 // There will be 4 child processes created by third fork
/ \ / \ / \ / \
............... // and so on
如果我们对 i = 0 到 n-1 的上述树的所有级别求和,我们得到 2 n – 1。因此将有 2 n – 1 个子进程。另一方面,创建的进程总数是(子进程数)+1。
注意:最大进程数为 2 n ,可能会因分叉失败而有所不同。有关更多详细信息,请参阅此帖子。
这个问题的测验