【问题标题】:Fork() execution and number of processesfork() 执行和进程数
【发布时间】:2019-02-22 04:46:22
【问题描述】:

如果一个进程执行以下代码

fork();
fork();
fork();

教科书将创建的子进程总数指定为 7。 但这是怎么发生的

fork 生成 2 个进程对吗?这两个进程都称为子进程吗?一个进程是父进程,一个进程是子进程,对吗? 即使两个进程都称为子进程,2*3=6?主进程不是子进程,数字7怎么来的。

【问题讨论】:

    标签: unix process operating-system


    【解决方案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
    

    【讨论】:

    • @techno 答案有帮助吗?你还有什么不清楚的地方吗?
    • 抱歉耽搁了...我已接受答案。感谢您的努力。
    猜你喜欢
    • 2014-06-17
    • 2015-04-28
    • 1970-01-01
    • 2022-01-17
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多