目标文件夹修改后的POSIX seekdir()和telldir()行为

时间:2010-10-14 13:54:07

标签: c posix unix posix-api

考虑以下任务:

1)读取目标目录内容,将每个找到的dirent结构传递给某个过滤器函数,并以某种方式记住过滤后的元素以供后续处理

2)一段时间之后,迭代过滤后的元素并处理它们(做一些I / O)

最明显的方法是保存子目录的名称。
但是,我希望将内存使用量降至最低,并避免额外的I / O.

根据POSIX手册,我可以使用telldir()保存每个目录条目的位置,稍后使用seekdir()恢复它们。为了保持这些位置有效,我必须保持目标目录打开并且不使用rewinddir()调用。
保持目录流打开并存储dir位置列表(long int`s)似乎是一个合适的解决方案。
但是,目前还不清楚文件夹修改后存储的位置是否仍然有效。我没有在POSIX标准中找到关于这些条件的任何评论。

  • 1)当只添加/删除新的目录条目时,存储的位置是否仍然有效?
  • 2)在删除某些已过滤目录条目的情况下,未修改目录条目的存储位置是否仍然有效?
  • 3)文件夹修改后,存储的位置是否可以指向另一个目录条目?

很容易测试并找出针对特定系统的这些问题的答案,但我想知道关于这个主题的标准说什么

谢谢

1 个答案:

答案 0 :(得分:1)

在您致电rewinddir或关闭并重新打开目录之前,您的目录内容视图不应更改。对不起,我没有参考方便。如果你需要,我会在以后找到它。