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

标签 c posix unix posix-api

考虑以下任务:

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

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

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

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

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

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

    谢谢

    最佳答案

    直到您调用 rewinddir或关闭并重新打开目录,您对目录内容的看法不应改变。抱歉,我手边没有引用资料。如果你需要它,我稍后会找到它。

    关于c - 目标文件夹修改后的 POSIX seekdir() 和 telldir() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933890/

    相关文章:

    c - 在编译器资源管理器中包含 C 的外部头文件

    在 shell 中用管道连接 n 个命令?

    c - 终止信号示例

    unix - 如何垂直拆分具有 250k 列的文件?

    聊天服务器(C 网络编程)

    c - memmove 留下垃圾 - C

    c - 在 C 中使用管道传递多个数据 block

    linux - 如何在多行而不是单行输出上打印 linux 组名

    c - 如何指向整个数组

    c - 是否有 sizeof(size_t) > sizeof(off_t) 的 POSIX 实现?