if 语句中的 fork() 语句创建了多少 child?
How many child are created by fork() statement in if statements?
在下面的伪代码中,创建了多少个child进程?
fork();
if(fork()==0)
fork();
fork();
我不太明白 if 语句是如何执行的,以及在 if 语句中创建了多少 child 个 child 个进程。
我会尝试看看我们是否可以将其可视化
第 1 行 - fork() 生成父级和 child_1
现在他们都开始运行编码
第 2 行 - if(fork()==0) 在父项和子项 1 中都是 运行:
- parent:将生成parent和child_2
- child_1: 将生成 child_1 作为父级和 child_3.
第 3 行 - fork() inside if 条件,此 if 条件仅对 child_2 和 child_3 为真,因为 fork() returns 子项的 id when parent 是 运行ning,child id 是 0。因为 child_2 和 child_3 是在 if condition fork() 中生成的 Childs,它们的 id 将为 0。之后:
- child_2: 将生成 child_2 作为父级和 child_4.
- child_3:将生成 child_3 作为父级和 child_5.
在这一点之后,我们有 parent,child_1,child_2,child_3,child_4,child_5 运行ning 并行。
现在第 4 行中的 fork() 运行 由它们各自生成
child_6、child_7、child_8、child_9、child_10、child_11分别由每个运行ning过程。
这导致总共有 12 个进程,其中 1 个是父进程,11 个是子进程。
因此总共有11个子进程。
在下面的伪代码中,创建了多少个child进程?
fork();
if(fork()==0)
fork();
fork();
我不太明白 if 语句是如何执行的,以及在 if 语句中创建了多少 child 个 child 个进程。
我会尝试看看我们是否可以将其可视化
第 1 行 - fork() 生成父级和 child_1
现在他们都开始运行编码
第 2 行 - if(fork()==0) 在父项和子项 1 中都是 运行:
- parent:将生成parent和child_2
- child_1: 将生成 child_1 作为父级和 child_3.
第 3 行 - fork() inside if 条件,此 if 条件仅对 child_2 和 child_3 为真,因为 fork() returns 子项的 id when parent 是 运行ning,child id 是 0。因为 child_2 和 child_3 是在 if condition fork() 中生成的 Childs,它们的 id 将为 0。之后:
- child_2: 将生成 child_2 作为父级和 child_4.
- child_3:将生成 child_3 作为父级和 child_5.
在这一点之后,我们有 parent,child_1,child_2,child_3,child_4,child_5 运行ning 并行。
现在第 4 行中的 fork() 运行 由它们各自生成 child_6、child_7、child_8、child_9、child_10、child_11分别由每个运行ning过程。
这导致总共有 12 个进程,其中 1 个是父进程,11 个是子进程。
因此总共有11个子进程。