考虑以下任务:
1)读取目标目录内容,将每个找到的目录结构传递给某个过滤器函数,并以某种方式记住过滤后的元素以供以后处理
2)一段时间后,遍历过滤的元素并处理它们(做一些I/O)
最明显的方法是保存子目录的名称。
但是,我希望将内存使用量保持在最低限度并避免额外的 I/O。
根据 POSIX 手册,我可以使用 telldir() 保存每个目录条目的位置,然后使用 seekdir() 恢复它们。为了保持这些位置有效,我必须保持目标目录打开并且不使用 rewinddir() 调用。
保持目录流打开并存储目录位置列表(long int`s)似乎是一个合适的解决方案。
但是,尚不清楚文件夹修改后存储的位置是否仍然有效。我在 POSIX 标准中没有发现对这些条件的任何评论。
很容易测试并找出特定系统的这些问题的答案,但我想知道关于这个主题的标准是什么
谢谢
最佳答案
直到您调用 rewinddir
或关闭并重新打开目录,您对目录内容的看法不应改变。抱歉,我手边没有引用资料。如果你需要它,我稍后会找到它。
关于c - 目标文件夹修改后的 POSIX seekdir() 和 telldir() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933890/