关于文件结构

转:https://blog.csdn.net/yuzhihui_no1/article/details/51272563

file结构在include\linux\fs.h中定义如下:

struct files_struct {

atomic_t count; /* 共享该表的进程数 */

rwlock_t file_lock; /* 保护以下的所有域,以免在tsk->alloc_lock中的嵌套*/

int max_fds; /*当前文件对象的最大数*/

int max_fdset; /*当前文件描述符的最大数*/

int next_fd; /*已分配的文件描述符加1*/

struct file ** fd; /* 指向文件对象指针数组的指针 */

fd_set *close_on_exec; /*指向执行exec( )时需要关闭的文件描述符*/

fd_set *open_fds; /*指向打开文件描述符的指针*/

fd_set close_on_exec_init;/* 执行exec( )时需要关闭的文件描述符的初 值集合*/

        fd_set open_fds_init; /*文件描述符的初值集合*/

struct file * fd_array[32];/* 文件对象指针的初始化数组*/

};

2.用户打开文件表

每个进程用一个files_struct结构来记录文件描述符的使用情况,这个files_struct结构称为用户打开文件表,它是进程的私有数据。files_struct结构在include/linux/sched.h中定义如下:

struct files_struct {

atomic_t count; /* 共享该表的进程数 */

rwlock_t file_lock; /* 保护以下的所有域,以免在tsk->alloc_lock中的嵌套*/

int max_fds; /*当前文件对象的最大数*/

int max_fdset; /*当前文件描述符的最大数*/

int next_fd; /*已分配的文件描述符加1*/

struct file ** fd; /* 指向文件对象指针数组的指针 */

fd_set *close_on_exec; /*指向执行exec( )时需要关闭的文件描述符*/

fd_set *open_fds; /*指向打开文件描述符的指针*/

fd_set close_on_exec_init;/* 执行exec( )时需要关闭的文件描述符的初 值集合*/

        fd_set open_fds_init; /*文件描述符的初值集合*/

struct file * fd_array[32];/* 文件对象指针的初始化数组*/

};

3.关于文件系统信息的fs_struct结构

第三个结构是fs_struct,在2.4以前的版本中在include/linux/sched.h 中定义为:

struct fs_struct {

atomic_t count;

int umask;

struct dentry * root, * pwd;

};

猜你喜欢

转载自blog.csdn.net/h490516509/article/details/84966409