为什么dotdot的inode id没有更新的inode id?


1

我有一个函数,通过从子项的“..”dentry获取父项的inode id,从子目录回溯到根目录。此回溯的主要目的是识别用户输入的路径的相对路径名称。

我知道孩子inode id做上面的回溯。但是当我这样做时我遇到了问题,在疏散后,孩子和父目录都有不同的inode no's。所以当用“..”回溯时,dotdot给出了前一个no的inode id,而不是疏散后的inode no。

为什么dotdot的inode id没有更新的inode id?

Answers:


1

我没有声誉发表评论,所以即使我不能完全理解你的意思,我也必须回答你的问题

更新的inode ID

好的,为了获得从根目录到你所在目录的路径,我们采取相反的方向。您首先要获取您所在目录的inode编号(从.条目中获取),然后通过该..条目到达父目录,然后在父目录中搜索,查找具有相同inode编号的目录一开始就有。这是父目录中此目录条目的名称。这样你就可以得到如何.在父目录上调用这个目录...重复这个迭代,你会得到granparent目录名......等等,直到....什么?

好的,根目录有一个..指向自身的条目(就像.),你必须将你上次获得的inode号与你在此迭代中得到的inode号进行比较,并且如果它们是相同的inode号则停止。一旦达到这个特殊目录,你就有了一个你需要反转的名字列表,在它们之间添加斜杠/你将拥有实际目录的路径。

如果你不在根文件系统中,那么内核会让你获得访问父目录所需的魔力(它..通过挂载点..进入,忽略条目指向自身)并且你将正确获得根目录的路径,所以你可以按照这个methot直到你得到...指向同一个inode。

我希望这完全回答你的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.