我相信这会创建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==0
和pid != 0
fork 4由fork 3创建的一半进程执行(因此,其中四个进程)。这将创建四个附加过程。你现在有12个过程。
fork 5由其余12个进程执行,再创建12个进程;现在有24个。
关于c - 这些fork()语句创建了多少个进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19106576/