Fork()命令有多少进程

时间:2013-12-10 11:21:11

标签: c fork

这是一个简单的,但我不确定解决方案

int main() {
    c = fork();
    fork();
    fork();
}

我认为8 ...也是c = 0的值?如果是这样,为什么?

2 个答案:

答案 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值