进程执行以下代码
for (i = 0; i < n; i++) fork();
创建的子进程总数为
(A) n
(B) 2 n -1
(C) 2 n
(D) 2 (n + 1) -1答案: (B)
解释:
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,并且可能由于fork失败而有所不同。有关更多详细信息,请参阅此帖子。
这个问题的测验