рассмотрим следующую задачу:
1) прочитать содержимое целевого каталога, передать каждую найденную структуру директивы какой-либо функции фильтра и как-то запомнить отфильтрованные элементы для последующей обработки
2) через некоторое время переберите отфильтрованные элементы и обработайте их (выполните некоторые операции ввода-вывода)
Самый очевидный способ - сохранить имена подкаталогов.
Однако я хочу свести к минимуму использование памяти и избежать дополнительных операций ввода-вывода.
В соответствии с руководствами по POSIX, я могу сохранить положение каждой записи каталога с помощью telldir () и позже восстановить их с помощью seekdir (). Чтобы эти позиции были действительными, я должен держать целевой каталог открытым и не использовать вызов rewinddir ().
Поддержание потока каталога открытым и сохранение списка позиций dir (long int`s) представляется подходящим решением.
Однако неясно, сохраняются ли сохраненные позиции после изменения папки. Я не нашел никаких комментариев к этим условиям в стандарте POSIX.
- 1) Сохраняются ли сохраненные позиции, когда добавляются / удаляются только новые записи каталога?
- 2) Сохраняются ли сохраненные позиции неизмененных записей каталога в случае удаления некоторых отфильтрованных записей каталога?
- 3) Возможно ли, чтобы сохраненная позиция указывала на другую запись каталога после изменения папки?
Легко протестировать и найти ответ на эти вопросы для конкретной системы, но я хотел бы знать, что стандарты говорят по этой теме
Спасибо