一句话终结
fd是数组的索引,数组是进程结构体task_struct
里的数组*files
,*files
记录着进程打开的文件, fd作为索引指向某个具体的文件files_struct
struct task_struct {
// ...
/* Open file information: */
struct files_struct *files;
// ...
}
struct files_struct {
// 读相关字段
atomic_t count;
bool resize_in_progress;
wait_queue_head_t resize_wait;
// 打开的文件管理结构
struct fdtable __rcu *fdt;
struct fdtable fdtab;
// 写相关字段
unsigned int next_fd;
unsigned long close_on_exec_init[1];
unsigned long open_fds_init[1];
unsigned long full_fds_bits_init[1];
struct file * fd_array[NR_OPEN_DEFAULT];
};