这是最近GATE入学考试的一个问题。
的方法执行的代码C程序中的fork()
fork();
fork();
fork();
创建子进程的总数是
(A)3(B)4(C)7(d)8。
我的回答是(A)3.
我的看法是,在每个fork()之后,将创建一个子进程并且父进程的执行将正常继续。从教练的机构
不可靠的答案(没有任何解释)为(C)7.
我觉得他们处理每一个叉将创建一个子进程和新的父进程。而且他们也计算了所有的父母程序。 [我不允许发布图片,但我的朋友在图表中解释了一个树,每个左边的节点在两个节点中分叉。因此左边的4个父节点和右边的3个子节点。] 但问题清楚地提到了子进程。而且我不认为这个父进程是新创建的。
有人可以解释一些分叉基本原理,并请妥善解决上述问题。
P.S.如果编程语言在分岔概念上有所不同,那么按照教学大纲,这应该是C或C++程序。
第一进程可创建子进程的去'fork()的'自己。你也应该数这些。 – 2012-02-15 19:13:24
不,分叉是一个操作系统的概念 - 编程语言无关紧要。 – Rup 2012-02-15 19:17:09
这说明了为什么多项选择题在辩解中表现出理解。如果你必须写一个答案来解释你是如何得到答案的,那么即使你从“官方答案”中得出了不同的结论,你也可以得到理解这些概念的功劳。例如,儿童进程的孩子是否被计算在内?它改变了要给出的答案。 – 2012-02-15 19:23:06