我目前正在尝试在内核函数中获取给定路径名的索引节点。我所拥有的只是完整路径名。我尝试过类似的尝试:

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

但事实证明,给定路径中的目录项无效。然后我想也许尝试 stat() 并从中获取索引节点号。然而,这只给了我一个数字,而不是一个结构索引节点。我不知道有什么方法可以将索引节点号转换为索引节点,而无需获取现有索引节点并遍历整个索引节点列表。我什至不知道这是否有效。但我当然不想这样做。

有没有简单的方法可以从内核内的 char *pathname 获取 struct inode?

有帮助吗?

解决方案

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

反正, 这个链接 可能有帮助。

其他提示

stat() 将为您提供“中文件的索引节点”st_ino“ 场地。

抱歉,最初对这个问题的误解。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top