神秘的Fork()调用输出?

时间:2015-01-25 07:50:19

标签: operating-system fork

enter image description here

为什么要打印两个"嗨"在上面的程序? fork()调用编译器是否依赖?

1 个答案:

答案 0 :(得分:1)

我认为您的问题已在评论中得到解答。但同样,子进程基本上继承了父进程的缓冲区。据我所知,stdout缓冲区不会打印,如Jochaim Pileborg所述,直到缓冲区已满,printf中的换行符或stdout被关闭。

在这种情况下,在创建子进程之前,它们都不会发生。现在父母的缓冲区包含" Hi"被复制到子缓冲区。当父项和子项都完成执行时,stdout将关闭,因此输出将从每个中刷新。这导致你的两个"嗨"。