进程中管理文件列表结构
struct tast_struct
是内核中用来表示进程的一个数据结构,它包含了进程的所有信息。本小节我们只列出和文件管理相关的属性。
其中进程内打开的所有文件是通过一个数组fd_array
来进行组织管理,数组的下标即为我们常提到的文件描述符
,数组中存放的是对应的文件数据结构struct file
。每打开一个文件,内核都会创建一个struct file
与之对应,并在fd_array
中找到一个空闲位置分配给它,数组中对应的下标,就是我们在用户空间
用到的文件描述符
。
对于任何一个进程,默认情况下,文件描述符
0
表示stdin 标准输入
,文件描述符1
表示stdout 标准输出
,文件描述符2
表示stderr 标准错误输出
。
进程中打开的文件列表fd_array
定义在内核数据结构struct files_struct
中,在struct fdtable
结构中有一个指针struct fd **fd
指向fd_array
。