C 在Linux上如何通过inode访问文件
是否有任何用户空间API或第三方内核模块可以帮助Linux上的inode访问文件 我正在尝试实现以下功能:C 在Linux上如何通过inode访问文件,c,linux,filesystems,kernel,ext4,C,Linux,Filesystems,Kernel,Ext4,是否有任何用户空间API或第三方内核模块可以帮助Linux上的inode访问文件 我正在尝试实现以下功能: int read_file_by_ino(int ino, int pos, int size, char* buf); int write_file_by_ino(int ino, int pos, int size, const char* buf); int readdir_by_ino(...); int stat_by_ino(...); ... 该程序应在root用户下运行,
int read_file_by_ino(int ino, int pos, int size, char* buf);
int write_file_by_ino(int ino, int pos, int size, const char* buf);
int readdir_by_ino(...);
int stat_by_ino(...);
...
该程序应在root用户下运行,因此没有进行权限检查的安全要求。不确定我是否正确理解了您的问题,但:
您可以从“/”目录开始,然后递归地(或任何循环)处理子目录。将inode值与struct stat.ino\u t进行比较。一旦找到它,就打开路径/文件。我不知道是否有更简单的方法,但你可以用bash来实现。使用ls-i命令,您也可以看到索引节点
$ ls -i
11147622 file.txt
第一列是inode编号,blow命令显示当前目录中的inode
$ ls -i | awk {'print $1'}
因此,您需要检查/too所有子目录中的索引节点,直到找到它为止
ls -iR /
它显示了所有子目录和具有索引节点编号的文件现在,您应该从/开始,使用awk to或cut命令获得第一列(inode编号在第一列中),然后将其与要查找的inode进行比较 我发现这个问题与类似的话题有关 总结一下,查看以下命令:
find/path/to/mountpoint-inum
sudo debugfs-R'ncheck 393094'/dev/sdaX 2>/dev/null
希望这有助于您进一步调查。可能没有,为什么要问?这看起来像一场可靠性噩梦。因此,这肯定是一个坏消息idea@BasileStarynkevitch我正在实现一个fuse程序,它需要操作远程文件系统,fuse低级API使用I节点号。然而,fuse高级API与path一起工作,但我认为会有一些性能损失。很好的答案是“为什么?”: