这是一个简单的,但我不确定解决方案
int main() {
c = fork();
fork();
fork();
}
我认为8 ...也是c = 0的值?如果是这样,为什么?
答案 0 :(得分:2)
答案是:由fork产生7个进程。
首先,您拥有主要流程。它自我分叉,创造了一个新的过程。我们称之为 child1 。
现在,主要和 child1 都会自行分叉,创建 child2 和 child3 。
现在,主要, child1 , child2 和 child3 再次分叉..创建 child4 < / strong>, child5 , child6 和 child7 。
c等于0,仅在第一个fork成功时才在child1进程中。
(来自man fork):
RETURN VALUE
On success, the PID of the child process is returned in the parent, and 0 is returned in the child.
请记住,每个进程都有自己的PID,这与任何其他现有进程的PID不同。在每个fork之后,父级知道生成的子级的PID。
答案 1 :(得分:0)
您希望在哪个过程中了解该值?子进程将具有c = 0,并且父进程将在c
中具有其子的pid值