Fork()执行和进程数

时间:2018-09-18 07:56:59

标签: unix process operating-system

如果进程执行以下代码

fork();
fork();
fork();

一本教科书将创建的子进程总数设为7。 但这是怎么发生的

fork生成2个进程,对吗?这两个过程都称为子过程吗?一个过程是父母的父母,一个过程是孩子的权利吗? 即使两个进程都称为子进程,2 * 3 = 6?主要过程不是子过程,数字7如何进入图片。

1 个答案:

答案 0 :(得分:1)

教科书是正确的。 fork仅创建一个子进程。 fork在父进程中返回子进程的PID,在子进程中返回0。

在显示此内容的树下。数字显示一个进程仍要执行多少个派生。括号表示该进程是父进程,方括号表示该进程是子进程-显然,子进程将在下一代中成为父进程(对fork的下一次调用)。每一代都在单独的行中。

                   (3)
         (2)                   [2]
    (1)      [1]           (1)     [1]
(0)   [0]  (0)  [0]     (0)  [0]  (0)  [0]

总共有7个子进程(方括号)。

一个证明它的Python程序:

import os
print os.fork()
print os.fork()
print os.fork()

这是输出。顺序是随机的,但是请记住,fork在子进程中返回0:

13196
0
13197
13198
0
13199
0
0
13200
13201
0
13202
0
0