0

在项目中,程序必须将目录的每个子目录的引用/标识符存储在其变量(例如堆栈)中。即,一旦读取了目录,程序就不能对每个孩子再次执行路径查找。

我不太确定该怎么做。因为如果存储了inode编号,那么inode就无法访问相应的文件/目录吧?

将不胜感激一些指示

谢谢

编辑:我“不能再次执行路径查找”的原因.....线程正在以深度优先的方式读取文件系统树,当它读取目录时......其子项的标识符被保存以跟随它再次以深度优先的方式。为什么我保存标识符是因为已经读取的目录可能会被并发线程移动到文件系统的另一部分,并且移动目录下的子树可能不会被读取,因为树的那部分已经被遍历。

4

1 回答 1

1

这闻起来像家庭作业,只是过去没有办法做到这一点;现在是可能的,但只能通过使用相当新的openat系统调用及其朋友(参见该手册页底部的“另见”列表)。您是正确的,您无法通过其 inode 号打开文件;但是使用这些*at函数,您可以按相对于您具有打开文件描述符(而不是a DIR*)的目录的名称打开文件。

于 2011-11-03T04:06:56.520 回答