Linux内核3.10版本中通过struct file*获取文件描述符
在Linux内核3.10版本中,可以通过struct file*来获取文件描述符(file descriptor,fd)。在内核中,struct file结构体表示打开的文件,其中包含了文件描述符。
要获取文件描述符,可以使用以下方法:
-
获取当前进程的结构体task_struct,可以使用当前进程的进程描述符(current)或者通过进程ID(PID)获取。
struct task_struct *task = current; // 当前进程 // 或者 struct task_struct *task = pid_task(find_vpid(pid), PIDTYPE_PID); // 根据进程ID获取进程描述符 -
通过task结构体中的files成员获取打开文件的结构体files_struct。
struct files_struct *files = task->files; -
通过files_struct结构体中的fdt成员获取文件描述符表的结构体filedesc。
struct fdtable *fdt = files->fdt; -
通过fdtable结构体中的fd数组,可以根据fd索引获取对应的struct file结构体。
struct file *file = fdt->fd[fd];
注意,上述代码中的fd是要获取的文件描述符,可以是已知的文件描述符,或者通过其他方式获取。
通过以上步骤,就可以通过struct file*获取到文件描述符fd对应的struct file结构体。
原文地址: https://www.cveoy.top/t/topic/bqhJ 著作权归作者所有。请勿转载和采集!