从Linux内核中的路径获取inode

时间:2009-03-02 00:06:19

标签: linux kernel

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

对不起,最初误解了这个问题。

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

答案 1 :(得分:0)

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

无论如何,this link可能会有所帮助。