5

consider the following task :

1) read a target directory contents, pass each found dirent structure to some filter function and remember filtered elements somehow for the later processing

2) some time later, iterate through the filtered elements and process them (do some I/O)

The most obvious way is to save names of sub-directories.
However, I want to keep memory usage to the minimum and to avoid additional I/O.

According to POSIX manuals, I can save position of each directory entry using telldir() and restore them later using seekdir(). To keep these positions valid, I have to keep target directory opened and to not use rewinddir() call.
Keeping a directory stream open and storing a list of dir positions(long int`s) seems to be an appropriate solution.
However, it is unclear whether stored positions remain valid after folder modification. I didn`t found any comments on these conditions in the POSIX standard.

  • 1) Whether stored positions remain valid when only new directory entries are added/removed ?
  • 2) Whether stored positions of unmodified directory entries remain valid in case of some of the filtered directory entries were removed ?
  • 3) Is it possible for the stored position to point to another directory entry after folder modification ?

It is easy to test and find out the answer on these questions for the particular system, but I would like to know what standards say on this topic

Thank you

4

1 回答 1

2

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

于 2010-10-14T17:26:05.720 回答