【问题标题】:fork() sequence of execution? [closed]fork() 执行顺序? [关闭]
【发布时间】:2015-01-08 12:09:11
【问题描述】:
int main () { 

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

    pf (" hi\n"); 

} 

“hi”会打印多少次? fork() 的执行顺序是什么? os:linux 编译器:gcc

【问题讨论】:

  • fork 可能会失败,因此您无法确定答案。阅读Advanced Linux Programming,其中有几章对此进行了解释。
  • 答案不会是固定的。
  • 如果每个分叉都正常,那就是 8 个。
  • 不重复,但相关:stackoverflow.com/a/26716300/2411320
  • 质量非常低。一个简单的搜索就会得到答案。

标签: c linux gcc linux-kernel


【解决方案1】:

问题 1:“hi”会打印多少次?

                      Due to first Fork
                             |
                   -------------------------
                   |                        |
             Due to second fork         Due to second fork
                   |                          |
          ----------------------            ----------------------------
        |                      |            |                          |
  Due to 3rd fork        Due to 3rd fork   Due to 3rd fork             Due to 3rd fork
        |                      |                |                           |
------------------       ---------------       ----------               ------------
|               |        |             |      |          |               |          |
process-1     process-2   process-3   process-4 pr-5     pr-6         process-7    process-8

所以 如果所有fork 一切顺利,则总共创建了 8 个进程,因此输出中将有 8 个或更少的 hi

问题 2:fork() 的执行顺序是什么? os:linux 编译器:gcc

无法保证哪个进程会先被调度,哪个进程会被调度。 这一切都取决于调度程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多