【Linux系统编程】IO标准缓冲区
1. 缓冲区概述 标准I/O提供了三种类型的缓冲: 1、全缓冲: 在填满标准I/O缓冲区后才进行实际I/O操作。常规文件(如普通文本文件)通常是全缓冲的。 2、行缓冲: 当在输入和输出中遇到换行符时,标准I/O库执行I/O操作。这允许我们一次输出一个字符,但只有在写了一行之后才进行实际I/O操作。标准输入和标准输出对应终端设备(如屏幕)时通常是行缓冲的。 3、不带缓冲: 用户程序每次调库函数做写操作都要通过系统调用写回内核(如系统调用函数)。标准错误输出通常是无缓冲的,这样用户程序产生的错误信息可以尽快输出到设备。 2. 全缓冲 测试代码: int main(int argc, char *argv[]) { FILE *fp = NULL; // 读写方式打开,文件不存在则创建 fp = fopen("test.txt", "w+"); if(NULL == fp) { printf("open error\n"); return 1; } char *str = "C++程序员\n"; fwrite(str, 1, strlen(str), fp); // 往文件写内容 while(1); // 程序阻塞在这里 return 0; } 运行程序发现,test.txt并没有内容。因为常规文件通常是全缓冲的,只有缓冲区满了后,才会把内容写到文件中。接下来,我们改一下上面那个例子。