考虑以下任务:
1)读取目标目录内容,将每个找到的dirent结构传递给某个过滤器函数,并以某种方式记住过滤后的元素以供后续处理
2)一段时间之后,迭代过滤后的元素并处理它们(做一些I / O)
最明显的方法是保存子目录的名称。
但是,我希望将内存使用量降至最低,并避免额外的I / O.
根据POSIX手册,我可以使用telldir()保存每个目录条目的位置,稍后使用seekdir()恢复它们。为了保持这些位置有效,我必须保持目标目录打开并且不使用rewinddir()调用。
保持目录流打开并存储dir位置列表(long int`s)似乎是一个合适的解决方案。
但是,目前还不清楚文件夹修改后存储的位置是否仍然有效。我没有在POSIX标准中找到关于这些条件的任何评论。
很容易测试并找出针对特定系统的这些问题的答案,但我想知道关于这个主题的标准说什么
谢谢
答案 0 :(得分:1)
在您致电rewinddir
或关闭并重新打开目录之前,您的目录内容视图不应更改。对不起,我没有参考方便。如果你需要,我会在以后找到它。