一、IO概述
标准IO:通过文件指针访问文件(stdin stdout stderr)-------》带缓存
文件IO:通过文件描述符访问文件(0, 1, 2)---------》支持对各种文件进行读写操作
在linux下对于管道、套接字等设备进行读写操作时候,就必须使用文件IO进行操作了,对于标准IO,它为系统的库函数,在各种平台上的使用基本上相同,便于移植。
文件指针: FILE *
文件描述符:int
二、三种缓存区
1、行缓存区:对于终端操作采用的缓冲区
缓存区大小: 1024字节(1K)
刷新缓存条件:程序正常结束、缓存区满、 ’\n’ 、使用fflush函数
2、全缓存区:对于文件操作采用的缓冲区
缓存区大小:4096字节(4K)
刷新缓存 :程序正常结束、缓存区满、使用fflush函数
3、无缓冲:对于终端操作采用的缓冲区
标准出错(stderr)
三、fflush函数的功能
刷新缓存区 的内容。
int fflush(FILE *stream);
四、测试源码
#include <stdio.h>
#if 0
刷新缓存的条件:程序正常结束 ‘\n’ fflush 缓存区满
int fflush(FILE *stream);
功能:刷新缓存区
注意:不能刷新stdin
#endif
int main(int argc, const char *argv[])
{
int i;
for(i=0; i<5; i++)
{
printf("%c", 'A'+i);
fflush(stdout);
sleep(1);
}
printf("\n");
return 0;
}
测试时体会加入fflush函数和不加入时的区别。
加入后的效果:
不加入的效果:
因为程序正常退出了,所以将缓存区的内容那个刷新至标准输出了。