原文:https://blog.csdn.net/kuaidfkuai/article/details/45918025
《unix环境高级编程》中介绍标准IO:
标准IO流操作读写普通文件是使用全缓冲的,默认缓冲区长度是该文件系统优先选用的IO长度(一般是4kB)。
因此当数据长度没有填满缓冲区时,在文件中是无法看到的。
解决方法有三种:
1. fflush()。
2.fclose()。
3. 函数setvbuf()修改stream(流)的缓冲区大小。
函数setvbuf 用法:
#include <stdio.h>
int setvbuf(FILE *stream, char *buf, int mode , size_t size);
stream:文件句柄。
buf: 替换默认缓冲区。
size:buf的大小。
mode:设置模式,
_IOFBF, 表示完全缓冲
_IOLBF, 表示线缓冲
_IONBF, 表示无缓存
注意:使用fflush或setvbuf,都会增加IO读写次数,加大性能消耗。