我正在尝试在内核函数中获取给定路径名的inode。我所有的都是完整的路径名。我尝试过这样的尝试:
user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path);
但是,在给定路径中的dentry无效,似乎结果。然后我想也许尝试stat()并从中获取inode数。但是,这只给了我一个数字,而不是结构inode。我不知道如何在不抓取现有inode并遍历整个inode列表的情况下将inode编号转换为inode。我甚至不知道这是否有效。但我当然不想这样做。
有没有简单的方法从内核中的char * pathname获取struct inode? p>
答案 0 :(得分:2)
stat()
会在“st_ino
”字段中为您提供文件的inode。
对不起,最初误解了这个问题。
如果你想在内核中使用实际的inode结构,我很确定内核本身不会在数组或列表中查找inode编号(除非列表非常小)。由于内核的代码是公开的,你应该能够找到它是如何做到的,然后再做同样的事情。
答案 1 :(得分:0)
没有简单的方法,因为struct inode是内核的一部分,而且你在用户空间。这一切都取决于特定的文件系统实现。您确定stat struct中的信息不足以满足您的需求吗?
无论如何,this link可能会有所帮助。