gpt4 book ai didi

c - 从 Linux 内核模块的文件描述符获取文件名/路径?

转载 作者:IT王子 更新时间:2023-10-29 01:27:06 24 4
gpt4 key购买 nike

在 linux 内核模块中有没有办法从 unsigned int fd 获取文件名/路径?

我知道这个答案:How can I get a filename from a file descriptor inside a kernel module?但如果我正确理解代码,我还需要一个 struct files_struct

编辑:

请停止投票,因为它不是重复的。我正在寻求一种方法来从内核模块获取纯 C 中的文件名/路径,而不是使用系统工具。换句话说:在/procself/fd/上运行 readlink 不是一个好的答案。

编辑 2:

内核的系统调用 read ssize_t read(int fd, void *buf, size_t count); 有 3 个参数,其中一个是 fd。很明显,read 能够以某种方式从单个文件(而不是 inode 内的所有文件)中读取。问题是如何。

最佳答案

您引用的问题答案中的代码就是您需要做的。是的,需要来自任务的 struct files_struct,因为文件描述符仅在 files_struct 的上下文中有意义(通常,每个进程都有一个) .文件描述符不是全局唯一的,只是单个打开文件表中的索引。

如果您的代码在进程上下文中运行(例如,通过系统调用调用),那么您可以将current->files 用于当前任务的files_struct。这就是 read() 所做的。

关于c - 从 Linux 内核模块的文件描述符获取文件名/路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504859/

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