Linux标准IO——流

特点

  1. 标准IO通过缓存机制减少系统调用,实现更高的效率。
  2. 由ANCⅡ C库定义
  3. 是在文件I/O的基础上添加了一个缓存机制

流(stream)

  1. Windows:分为二进制流(换行符<=>‘\n’),文本流(换行符<=>’\r’,‘\n’)
  2. Linux:不区分二进制流和文本流(换行符<=>‘\n’)
  3. 由FILE结构体存放打开文件的相关信息:
struct _iobuf
{
    
    
	char *_ptr;// _ptr 字符指针表示文件输入的下一个位置
	int _cnt;	// cnt 表示当前缓冲区的相对位置
	char *_base;// _base 字符指针表示文件的起始位置
	int _flag;	// _flag 表示文件标志
	int _file;//  _file 表示文件的有效性验证
	int _charbuf;// _charbuf  表示缓冲区的检查,若无此成员则不读取
	int _bufsize; //  _bufsize 表示文件大小
	char *_tmpfname;  // _tmpfnam 临时文件名
};
typedef struct _iobuf FILE;

流的缓冲类型

  1. 全缓冲:当缓冲区无数据或者无空间时才执行的实际I/O操作
  2. 行缓冲:当输入输出中遇到换行符经行的I/O操作;当流和一个终端相连时,经行行缓冲
  3. 无缓冲:数据直接写入文件,不进行缓冲(错误流)

基本流

  1. 标准输出流:stdin
  2. 标准输入流:stdout
  3. 标准错误流:stderr

猜你喜欢

转载自blog.csdn.net/qq_45279570/article/details/112918219