繁体   English   中英

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

[英]How to open and read file from `struct inode *` in Linux kernel

我想从Linux Kernel v3.0.8检查文件的内容,只知道struct inode * 我只需要读取此inode指向的文件的开头,然后关闭并返回。 我不关心文件名/ mountpoint等附加信息。事实上,该文件可能没有名称(如删除但仍然打开)。 可能吗?

我终于做到了这样:

  1. 这是必要的。
struct path root;
struct file *filerd;
  1. 获取init任务fs root。
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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM