5

我目前正在尝试在内核函数中获取给定路径名的 inode。我只有完整的路径名。我试过这样的尝试:

user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path);

但是那个给定路径中的 dentry 是无效的,结果似乎是这样。然后我想也许可以尝试 stat() 并从中获取 inode 号。但是,这只给了我一个数字,而不是结构 inode。我不知道在不获取现有 inode 并遍历整个 inode 列表的情况下将 inode 编号转换为 inode 的方法。我什至不知道这是否可行。但我当然不想那样做。

有什么简单的方法可以从内核中的 char *pathname 获取 struct inode 吗?

4

2 回答 2

2

stat()将在“ st_ino”字段中为您提供文件的 inode。

对不起,最初对问题的误解。

如果您想要内核中的实际 inode 结构,我很确定内核本身不会遍历数组或列表来查找 inode 编号(除非列表非常小)。由于内核的代码是公开的,你应该能够找出它是如何工作的,然后做同样的事情。

于 2009-03-02T00:12:37.790 回答
0

没有简单的方法,因为 struct inode 是内核的一部分并且您在用户空间中。这完全取决于特定的文件系统实现。您确定 stat 结构中的信息不足以满足您的需求吗?

无论如何,这个链接可能会有所帮助。

于 2009-03-02T00:19:44.967 回答