【问题标题】:C Programming Fork ExampleC 编程 Fork 示例
【发布时间】:2019-10-07 08:08:40
【问题描述】:

运行以下程序时会创建多少个进程?我解决不了。如果您能提供帮助,我将不胜感激

int main()
{ 
   int i;
   for (i=fork(); i<2; i++ )
      fork();
}

【问题讨论】:

标签: linux systems-programming


【解决方案1】:

fork() 创建一个子进程,创建父进程的另一个实例。它将 0 返回给子节点,将子节点的 PID 返回给父节点。

在这种情况下,当 i = fork() 被执行时, 父进程将 i 分配为子进程的 PID,该 PID 很可能大于 1。父进程中的 for 循环即使运行一次也不会运行,因为 i 将失败。此时有两个进程P和C1(Child)

parent执行fork后,child得到一个0作为返回值,i = 0。这意味着条件i 成功。 Child 在循环体中执行 fork(),创建 C2。 C1 和 C2 中 i 的值都是 0。i 递增到 1。

C1和C2执行i ,这个条件成功。 Fork 由两者执行。 C3由C1产生,C4由C2产生。

i 的值增加到 2。i

总而言之,该程序中创建了 4 个子进程。您可以使用以下程序尝试此操作,您将看到 5 个 PID 被打印出来。

    #include <stdio.h>
    main()
    {
       int i = 0;
       for (i = fork(); i < 2; i++)
          fork();
       printf("Hello World i %d\n", getpid());
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多