C 为什么fork()调用这个print语句?

C 为什么fork()调用这个print语句?,c,fork,C,Fork,在这个C程序中,我得到了我无法理解的输出 #include <stdio.h> int main() { printf("Hello World\n"); printf("%d\n", fork()); return 0; } 我的问题是,为什么它会打印两次“Hello World”?据我所知,它会打印“Hello World”,然后调用fork() fork()是否从程序的开头开始?如果阅读手册页,fork将向父级和子级返回一个值。而且它不是从节目一开始

在这个C程序中,我得到了我无法理解的输出

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    printf("%d\n", fork());
    return 0;
}
我的问题是,为什么它会打印两次“Hello World”?据我所知,它会打印“Hello World”,然后调用fork()


fork()是否从程序的开头开始?

如果阅读手册页,fork将向父级和子级返回一个值。而且它不是从节目一开始就开始的

请查看fork的手册页

“Hello world”是缓存的,而不是编写的。因此,当第二个进程退出时,它也会从输出缓冲区打印此消息。在分叉之前添加
fflush(stdout)
Hello World
5
Hello World
0