1、文件:一组数据的集合 2、文件名: 集合的名称
3、Linux系统的7种文件类型:
b block 块设备文件
c character 字符设备文件
d directory 目录文件
- 普通文件
l link 链接文件
s socket 套接字文件
p pipe 管道文件
4、IO:输入/输出
- 输入:数据由外部流向进程内部。例如读键盘、读磁盘、接收网络数据等
输出:数据由进程内部流向外部。例如向屏幕打印、写入磁盘、发送网络数据等
标准IO:是由C标准库提供的函数接口,有缓存,是高级IO,可移植性高(几乎所有支持标准C库的系统下都可以运行)
文件IO:是由Linux内核提供的函数接口,无缓存,是低级IO,可移植性较低(只能在LINUX/UNIX系统下运行)
linux系统下,中断启动的进程默认打开3个IO通道:
标准输入: stdin
标准输出: stdout
标准出错: stderr
5、缓存:为了平衡高速设备以及低速设备之间的速度差异而设定的块内容,用来临时存放数据。缓存可以极大地提高系统的整体运行效率
缓存的分类:
- 行缓存:只有满一行(遇到换行符)才刷新缓存(将数据写入设备并清空缓存),通常是一些用来人机交互的终端设备,例如标准输入。
- 块(满缓存): 只有缓冲区满了才刷新缓存,通常是普通的文件。
- 不缓存:没有缓冲区,进程的输出数据将直接写入内核。通常是一些对实时性有严格要求的设备(如:stderr)
注意:所有的缓冲的刷新方式除了以上之外,还可以发生在,fflush之后、缓冲区满,进程正常终止(主函数return或调用 exit)
操作文件流缓冲的接口:
setvbuf
流:对数据的一种操作方式,流抽象了一种先进先出,后进后出的通道,使得用户只需要关心数据的流向,不用关心数据的尺寸、内容以及具体如何传输的。绝对禁止函数返回自己局部变量的地址。