Я пытаюсь отладить прямо сейчас в C, и мне любопытно, можно ли многократно вызывать opendir() без необходимости сначала вызывать closeir(), потому что я пытаюсь запустить цикл для открытия подкаталогов, когда цикл while, который вызывает readdir() встречает их. И я предполагаю, что закрытие текущего каталога приведет к тому, что я потеряю возможность его читать.
Можно ли повторно использовать opendir в C?
comment
Вы назначаете результат opendir одной и той же локальной переменной? Если вы публикуете свой код с фактическими и ожидаемыми результатами, вам будет легче ответить на ваш вопрос.
- person mlibby   schedule 16.11.2009
comment
Что ж, я попытался сделать его рекурсивным... Я чувствую, что моя проблема может заключаться в другой проблеме, связанной с потоками...
- person KenjiOne   schedule 16.11.2009
Ответы (3)
Вы можете использовать opendir()
несколько раз. Просто оставьте свои DIR *
и позвоните closedir()
, когда закончите с каждым.
person
Wernsey
schedule
16.11.2009
Да, вы можете выполнять несколько вызовов opendir(). Остерегайтесь циклов символических ссылок, которые могут привести к бесконечному циклу и потреблению всей доступной памяти.
person
Jim Garrison
schedule
16.11.2009
Вам нужно быть осторожным, чтобы не слить DIR*
, который вы собираете, но пока вы не достигнете предела файлового дескриптора, у вас не должно возникнуть проблем с открытием нескольких opendir()
одновременно.
person
Douglas Leeder
schedule
16.11.2009