文件描述符
一.文件描述符:是一个非负的索引值。
在Linux下,对文件的操作都是通过文件描述符来进行的。linux进程默认会打开三个文件描述符,分别是
0 stdin 标准输入 对应设备:键盘
1 stdout 标准输出 对应设备 :显示器
2 stderror 标准错误 对应设备:显示器
我们知道,打开一个文件相当于创建一个进程,就会创建一个task_struct,在task_struct里面有一个file * 的指针,指向一个struct files_struct,里面有一个fd_array的数组,数组里的每一个每一个元素都是一个指向文件的指针,所以实际上fd_array是一个指针数组,数组里的元素类型是 struct file*。
数组里的对应的下标就是文件描述符
,files_struct是一个文件描述符表
所以只要拿到文件描述符,就可以拿到相对应的文件
二.文件描述符的分配原则
打开一个文件
可以看到fd=3
关闭了0号描述符所对应的文件,再观察就看到fd = 0
由此得出文件描述符的分配原则是从下标为0开始,找第一个未被占用的位置
三.重定向(>)的本质
我们来看一段代码