gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:27:03 25 4
gpt4 key购买 nike

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

我看了一些帖子,我看到使用dentry_path_raw(filp->f_path.dentry,buf,buflen)可以得到路径,其中filp是struct file的指针。

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

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

最佳答案

struct file 通常传递给内核模块的 openrelease 函数。

在您的内核模块中,您通常会填充一个file_operations 对象:

static struct file_operations my_fops = {
.owner = THIS_MODULE,
.open = my_open,
.release = my_release,
};

然后,实现功能:

static int my_open(struct inode *inode, struct file *filp) {
// Here you get the `filp`
return 0;
}
static int my_release(struct inode *inode, struct file *filp) {
// Here you get the `filp`
return 0;
}

安装模块后,当应用程序调用此模块的open()函数时,系统会自动调用my_open,传递filp指针.

关于c - 如何获取打开文件的结构文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55648212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com