【问题标题】:How many child processes are created when executing this program?执行这个程序时会创建多少个子进程?
【发布时间】:2019-10-30 23:00:12
【问题描述】:

我被困在代码行pid = fork();,我知道之前创建了2个子进程,但是一旦到达pid=fork();行,请澄清一下,前一个孩子是否被擦除和pid将再次从 0 开始分叉,还是继续与 2 个孩子分叉?

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

【问题讨论】:

  • 我做了,但每次结果都不一样

标签: c fork parent-child child-process


【解决方案1】:

如果 fork() 成功,它返回 0 给子进程,进程 id 给父进程。所以对于父母来说,pid != 0 对于孩子来说是这样。 在第一个 if 之后,在

之前
pid = fork()

线。有3个过程。然后这 3 个进程各自创建一个新子进程,然后依次创建另一个子进程。最后,所有进程都生成一个子进程。如果 fork() 没有一个失败,这将给我们 (3 + 3 + 3) * 2 = 18 个进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-01
    • 2014-06-22
    • 2020-09-12
    • 1970-01-01
    • 2020-10-19
    • 2013-10-07
    • 2017-12-13
    • 2022-10-02
    相关资源
    最近更新 更多