只需将stdout设置为在C程序的开始进行行缓冲(在执行任何输出之前),如下所示:
#include <stdio.h>setvbuf(stdout, NULL, _IOLBF, 0);
要么
#include <stdio.h>setlinebuf(stdout);
两种都可以在Linux上运行,但是
setvbuf属于C标准,因此它将在更多系统上运行。
默认情况下,stdout将被块缓冲用于管道或文件,或行被缓冲用于终端。由于在这种情况下stdout是管道,因此默认值将为块缓冲。如果是块缓冲的,则当缓冲区已满或调用时,将刷新该缓冲区
fflush(stdout)。如果它是行缓冲的,那么它将在每行之后自动刷新。



