我相信这会创建24个进程;但是,我需要验证。这些问题经常使我困惑。谢谢你的帮助!

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

int main(void)
{
  pid_t pid = fork();
  pid = fork();
  pid = fork();
  if (pid == 0)
  {
    fork();
  }
  fork();
  return 0;
}

最佳答案

通过这件事来推理是相当容易的。fork调用每次执行时都会创建一个附加进程。调用在新(子)进程中返回0,在原始(父)进程中返回子(非零)的进程id。

pid_t pid = fork();  // fork #1
pid = fork();        // fork #2
pid = fork();        // fork #3
if (pid == 0)
{
  fork();            // fork #4
}
fork();              // fork #5

fork 1创建一个附加进程。现在有两个过程。
fork 2由两个进程执行,创建两个进程,总共四个。
fork 3由四个进程执行,创建四个进程,总共八个。其中一半有pid==0pid != 0
fork 4由fork 3创建的一半进程执行(因此,其中四个进程)。这将创建四个附加过程。你现在有12个过程。
fork 5由其余12个进程执行,再创建12个进程;现在有24个。

关于c - 这些fork()语句创建了多少个进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19106576/

10-11 22:05
查看更多