执行此程序时创建了多少 child 个进程?

How many child processes are created when executing this program?

我被困在代码行 pid = fork(); 上,我知道之前创建了 2 个 child 进程,但是一旦它到达行 pid=fork();, 之前的 child 是否被擦除并且 pid 将再次从 0 开始分叉,还是只是继续与 2 child 分叉?

void main() {
int pid = fork();
if(pid != 0)
    fork();
pid = fork();
if(pid == 0)
    fork();
fork();
exit(0);
 }

如果 fork() 成功,它 returns 0 到 child 和进程 ID 到 parent。所以对于 parent, pid != 0 和 children 是。 在第一个 if 之后,

之前
pid = fork()

行。有3个过程。然后这 3 个进程各自创建一个新的 child,然后又创建另一个 child.Finally 所有进程都产生一个 child。如果 fork() 的 none 失败,这给了我们 (3 + 3 + 3) * 2 = 18 个进程。