学习Linux的同学都知道一句话:Linux下一切皆文件。学会文件基础和文件IO就是步入Linux殿堂重要的几步之一。在学习文件IO之前,我们先要了解一下文件基础和文件IO的定义。
一、文件基础
文件的概念就是:一组相关数据的有序集合。
他一共有几种类型:r -- 常规文件 d -- 目录文件 c -- 设备文件 b -- 块设备文件 p -- 管道文件
s -- 套接字文件 l -- 符号链接文件。这里面要特别注意的是管道文件和套接字文件是进程间通讯使用的,可以进行网络通信和本地通信。
简单的来说:文件就是IO操作的对象!
Linux中有两种操作文件的方法:标准IO和文件IO;接下来将会一一解释:
二、标准IO
2.1、标准IO介绍
标准IO由ANSIC标准定义,是标准C中定义好的一组用来输入输出的API(application program interface);受众方面:标准IO在现在大多数操作系统上都实现了C库,这就使它的使用方法很方便。效率方面:标准IO通过缓冲机制能够减少系统调用,实现更高的效率!具体实现就是在系统APP中开辟一片缓冲区,将要传输的数据集合在一起,当有需要或者满区时才传输。避免了一份数据一传,大大减少了系统调用。
2.2标准IO - 流
标准IO的使用离不开流(stream)也叫做FILE。
标准IO中用一个结构体类型(FILE)来存放打开文件的相关信息,标准IO的所有操作都围绕FILE来进行;
流有三种缓存类型:全缓冲、行缓冲、无缓冲
全缓冲:当流的缓冲区无数据或无空间时才执行实际IO操作,注意:打开的文件默认缓冲为全缓冲
行缓冲:当在输入和输出中遇到换行符'\n'时,才进行IO操作。stdin(标准输入流)、stdout(标准输出流)就是典型的行缓冲。
无缓冲:数据直接写入文件,流不进行缓存。stderr(标准错误流)就是无缓冲流。
上文提到的stdin\stdout\stderr是标准IO预定的三个流,程序运行时会自动打开
2.3、流的打开和关闭