研究缓冲和缓存.
通过以下方式执行了许多优化层:
为了延长磁盘的使用寿命并提高性能.
通过仔细使用刷新命令,你通常可以在你真正需要的时候"很快"地发生事情,尽管你通常应该谨慎地这样做.
GNU C Library文档有一个关于文件刷新主题的好页面,列出了fflush可以做你想要的功能.
您观察到仅由C标准I/O(stdio)缓冲区引起的影响.我声称任何操作系统或磁盘驱动程序缓冲都与它无关.
在stdio中,I/O以三种模式之一发生:
BUFSIZ(从<stdio.h>)字符累积.这是I/0重定向到文件或管道时的默认设置.这就是你观察到的.通常BUFSIZ是从1k到几KB的任何地方.BUFSIZ到达)换行符就会写入数据.这是i/o到终端时的默认值.您可以使用setvbuf()(<stdio.h>)函数来改变默认,使用_IOFBF,_IOLBF或_IONBF分别宏.请参阅友好的setvbuf手册页.
在您的情况下,您可以将输出流(stdout或FILE *返回的fopen)设置为行缓冲.
或者,fflush()无论缓冲如何,只要您希望I/O发生,就可以调用输出流.