如果进程执行以下代码
fork();
fork();
fork();
一本教科书将创建的子进程总数设为7。 但这是怎么发生的
fork生成2个进程,对吗?这两个过程都称为子过程吗?一个过程是父母的父母,一个过程是孩子的权利吗? 即使两个进程都称为子进程,2 * 3 = 6?主要过程不是子过程,数字7如何进入图片。
答案 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