C 如何获取打开文件的结构文件?

C 如何获取打开文件的结构文件?,c,linux-kernel,C,Linux Kernel,我想在内核模块中找到文件的路径。我仅有的信息是文件的文件描述符 我读了一些帖子,我看到使用dentry_path_raw(filp->f_path.dentry,buf,buflen)可以获得路径,其中filp是结构文件的指针 经过一些搜索,我知道“文件结构表示一个打开的文件(它不是特定于设备驱动程序的;系统中的每个打开的文件在内核空间中都有一个关联的结构文件。)它是由内核在打开时创建的,并传递给对该文件进行操作的任何函数” 但是如何首先获得这个结构文件呢?这个结构文件存在于内核空间中。找到与文

我想在内核模块中找到文件的路径。我仅有的信息是文件的文件描述符

我读了一些帖子,我看到使用dentry_path_raw(filp->f_path.dentry,buf,buflen)可以获得路径,其中filp是结构文件的指针

经过一些搜索,我知道“文件结构表示一个打开的文件(它不是特定于设备驱动程序的;系统中的每个打开的文件在内核空间中都有一个关联的结构文件。)它是由内核在打开时创建的,并传递给对该文件进行操作的任何函数”


但是如何首先获得这个结构文件呢?

这个结构文件存在于内核空间中。找到与文件关联的驱动程序,然后可以在对该文件进行操作的函数中获取指向struct file的指针。只能使用
fget()
从当前任务上下文的文件描述符中获取
struct file*
。请稍后调用
fput()
。@user7176709您能详细说明一下吗?比如文件的驱动程序是什么?这是我第一次用内核模块做一些事情。@Ian Abbott:这可能是个愚蠢的问题,但我没有找到fget()函数。您是指fgets()?它允许在内核空间中使用吗?而且它没有将文件描述符作为参数之一。我指的是由
#include
声明的内核函数
fget