【问题标题】:Unix fork: how many processes are created?Unix fork:创建了多少进程?
【发布时间】:2014-02-14 22:17:42
【问题描述】:

您好,我正在练习操作系统概念第 9 版第 3 章,有一个“创建了多少个进程,包括父进程?”让我困惑的问题。代码在 C 中,带有 Unix 系统调用,fork():

#include <stdio.h>
#include <unistd.h>

int main(){

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

return 0;
}

有朋友如何回答这个问题?谢谢

【问题讨论】:

  • 它有什么令人困惑的地方?你似乎已经明白了。
  • fork 创建的简单进程是 2^n,其中 n=没有 fork 调用。

标签: c unix operating-system fork


【解决方案1】:

我猜是 8,比如 1 -> 2 -> 4 ->8

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • @hkf 这个答案来自 OP,所以我认为这不是批评或澄清要求。 OP 应该在问题中包含猜测。
  • @JimBalter O 手册有误!应该是8!我刚刚测试过了!谢谢
  • 哪个手册有问题? 8 与 Unix/Linux/POSIX 手册所说的完全一致。
  • @JimBalter 这个问题其实来自Abraham 的第9 版操作系统概念书,他们的官方手册解决方案是为这个问题写的16。你可以查看他们的网站。不过好书。
【解决方案2】:
fork(); 

第一个 fork 从正在运行的 process(main) 创建了新进程。系统中现在有两个进程

fork();

Both 进程中的每一个都再次调用 fork。因此创建了两个新进程。所以现在系统中总共有四个进程

fork();

现在每四个进程调用fork。于是又创建了四个新进程。所以在最后一次调用 fork() 之后总共创建了 8 个进程;

【讨论】:

    【解决方案3】:

    包括父进程在内总共有 8 个进程。 这里,

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 2021-01-18
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多