谁能解释一下fork是如何工作的?

Non*_*ame 2 c unix posix fork

我真的不明白fork()是如何工作的.我理解一个fork的例子,但是当我有多个调用时,我没有.我有一个这样的例子,它打印4行hello,有多少个进程是产生的?

int main(void)
{
       fork();
       fork();
       printf("hello\n");

       return 0;
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*nko 10

fork()调用之后,两个进程(原始进程和衍生进程)继续从下一行代码执行.所以这两个进程都执行第二fork()条指令,所以最后你有4个进程.因此,您会看到"hello"打印的4个实例.

一张图片胜过千言万语:

叉说明