为什么要打印两个"嗨"在上面的程序? fork()调用编译器是否依赖?
答案 0 :(得分:1)
我认为您的问题已在评论中得到解答。但同样,子进程基本上继承了父进程的缓冲区。据我所知,stdout缓冲区不会打印,如Jochaim Pileborg所述,直到缓冲区已满,printf中的换行符或stdout被关闭。
在这种情况下,在创建子进程之前,它们都不会发生。现在父母的缓冲区包含" Hi"被复制到子缓冲区。当父项和子项都完成执行时,stdout将关闭,因此输出将从每个中刷新。这导致你的两个"嗨"。