这是最近GATE入学考试的一个问题.
进程执行代码
fork();
fork();
fork();
Run Code Online (Sandbox Code Playgroud)
创建的子进程总数是
(A)3.(B)4.(C)7.(D)8.
我的回答是(A)3.
我的观点是,在每个fork()之后,将创建1个子进程,并且父进程将正常继续.
教练机构的不可靠答案(没有任何解释)是(C)7.
我认为他们认为每个fork都会创建一个子进程和一个新的父进程.而且他们也在计算所有父进程.[我不允许发布图片,但我的朋友在图表中解释了一个树,每个左边的节点在两个节点中向下分叉.因此左边有4个父节点,右边有3个子节点.] 但问题清楚地提到了子进程.而且我也不认为父进程是在分叉中新创建的.
有人可以解释一些分叉的基本原理,并请问上述问题的正确解决方案.
PS如果编程语言在分叉概念上有任何不同,那么按照教学大纲,这应该是C或C++程序.
Jon*_*ler 15
我认为总共有8个过程,或原始的7个后代,或者原始的3个直接子女(其他是孙子和曾孙子).
fork(),假设没有失败(整个),有两个过程.fork()再次执行- 所以现在有四个进程.fork()再次执行- 所以现在有八个进程.