标准库函数提供带缓冲区的文件操作,将会在用户空间中自动为正在使用的文件开辟内存缓冲区
对于全缓冲区,会塞满整个缓冲区再来进行IO系统调用操作,通常磁盘文件的操作都是全缓冲来访问,打印一下缓冲区大小
#include <stdio.h> int main(){ printf("%d\n", BUFSIZ); return 0; } [lihui@localhost ~]$ ./a.out 8192
在CentOS6.4上,缓冲区大小的定义,首先是宏BUFSIZ
#include <stdio.h>
/* Default buffer size. */ #ifndef BUFSIZ # define BUFSIZ _IO_BUFSIZ #endif
而_IO_BUFSIZ在libio.h里定义
#include <libio.h> #define _IO_BUFSIZ _G_BUFSIZ
最终在_G_config.h里可以看到缓冲区默认为8K
#include <_G_config.h> #define _G_BUFSIZ 8192
如此一来,磁盘文件操作可以一次性从文件中读取大量数据到缓冲区里,不需要频繁使用系统调用,提高效率