【发布时间】:2019-02-22 04:46:22
【问题描述】:
如果一个进程执行以下代码
fork();
fork();
fork();
教科书将创建的子进程总数指定为 7。 但这是怎么发生的
fork 生成 2 个进程对吗?这两个进程都称为子进程吗?一个进程是父进程,一个进程是子进程,对吗? 即使两个进程都称为子进程,2*3=6?主进程不是子进程,数字7怎么来的。
【问题讨论】:
标签: unix process operating-system
如果一个进程执行以下代码
fork();
fork();
fork();
教科书将创建的子进程总数指定为 7。 但这是怎么发生的
fork 生成 2 个进程对吗?这两个进程都称为子进程吗?一个进程是父进程,一个进程是子进程,对吗? 即使两个进程都称为子进程,2*3=6?主进程不是子进程,数字7怎么来的。
【问题讨论】:
标签: unix process operating-system
教科书是正确的。 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
【讨论】: