linux系统针对不同的设备采用了不同的缓冲机制来使系统性能得到最优的效率。系统中采用的缓冲有完全缓冲、行缓冲和无缓冲等。完全缓冲就是只有缓冲区中的数据完全填满时数据才真正的被输出。裁判文件通常是完全缓冲的,因为磁盘是低速设备,如果实时写入,系统效率太低。例如对于
fp=fopen("/tmp/file.txt","w");
fprintf(fp,"write to the file");
只有当文件指针中的缓冲区被填满后才会调用write将数据输出,但是当write成功返回,还是不能说明数据真正的被写进磁盘,write成功,只是将数据写到了磁盘高速缓冲区中,操作系统将定期把脏数据块写入磁盘。程序可以通过fflush函数迫使文件结构中的缓冲区输出。
行缓冲就是当遇到\n时,将把数据输出。对于标准输入和标准输出,通常系统采用行缓冲。
无缓冲就是将数据直接输出,标准错误输出便采用无缓冲的输出。
阅读(2292) | 评论(0) | 转发(0) |