在项目中,程序必须在其变量(例如堆栈)中存储目录的每个子项的引用/标识符。也就是说,一旦读取目录,程序就不能再为每个孩子执行pathlookup。
我不太确定该怎么做。因为如果存储了inode号,那么inode权限不能访问相应的文件/目录吗?
将会感激一些指示
由于
编辑:我的理由“不能再次执行pathlookup”......一个线程正在以深度优先的方式读取文件系统树,当它读取目录时......其子节点的标识符被保存为关注它再次以深度为先。为什么我保存标识符是因为已读取的目录可能会被并发线程移动到文件系统的另一部分,并且可能无法读取移动目录下的子树,因为已经遍历了树的那部分。 / p>
答案 0 :(得分:1)
这闻起来像家庭作业,除了以前没有办法做到这一点;现在可以,但只能使用相当新的openat
系统调用及其朋友(请参阅该联机帮助页底部的“另请参见”列表)。你是不正确的,你无法通过其inode号打开文件;但是使用*at
函数,您可以打开名称相对于目录的文件,该文件具有打开的文件描述符(不 a DIR*
)for。