如何在Linux内核中从`struct inode *`打开和读取文件

时间:2019-01-14 12:30:14

标签: c file linux-kernel inode

我想只知道struct inode *来检查Linux Kernel v3.0.8中文件的内容。我只需要读取此索引节点指向的文件的开头,然后关闭并返回即可。我不在乎其他信息,如文件名/挂载点等。实际上,该文件可能没有名称(如已删除但仍处于打开状态)。有可能吗?

1 个答案:

答案 0 :(得分:3)

我终于做到了:

  1. 这是必需的。
struct path root;
struct file *filerd;
  1. 获取根目录的初始化任务。
task_lock(&init_task);
get_fs_root(init_task.fs, &root);
task_unlock(&init_task);
  1. 将dentry更改为此文件:
root.dentry = d_find_alias(inode);
  1. 打开文件:
filerd = file_open_root(root.dentry->d_parent, root.mnt,
                        root.dentry->d_name.name, O_RDONLY);

它适用于我测试的每个过程以及不同的安装点,这让我感到惊讶。

相关问题