Linux文件缓冲区

标准库函数提供带缓冲区的文件操作,将会在用户空间中自动为正在使用的文件开辟内存缓冲区

对于全缓冲区,会塞满整个缓冲区再来进行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

如此一来,磁盘文件操作可以一次性从文件中读取大量数据到缓冲区里,不需要频繁使用系统调用,提高效率

发表回复