【发布时间】:2019-06-08 10:44:04
【问题描述】:
我想检查来自 Linux Kernel v3.0.8 的文件的内容,只知道struct inode *。我只需要读取这个 inode 指向的文件的开头,然后关闭并返回。我不关心文件名/挂载点等附加信息。事实上,文件可能没有名称(如已删除但仍打开)。有可能吗?
【问题讨论】:
-
struct inode具有字段struct inode_operations *i_op;和struct inode_operations具有字段int (*readpage) (struct file *, struct page *);但您需要struct file *值来调用该函数,不确定您是否可以仅使用 inode -
kernel v4.19 有
open_with_fake_path,但它带有不要使用它的可怕警告,它需要一个struct cred来提供安全上下文。 -
我在
i_op中没有readpage——它是3.0.8 旧内核。i_fop也是如此,即struct file_operations *,但open、read等需要struct file *。 -
我正在检查
open_with_fake_path的代码——它看起来很有用。我将不得不将其移至我的代码中。struct cred不是问题。 -
@PiotrJedyk 我建议先阅读commit,尤其是只有在inode 的一些
dentry别名被固定时才这样做。
标签: c file linux-kernel inode