Можно ли повторно использовать opendir в C?

Я пытаюсь отладить прямо сейчас в C, и мне любопытно, можно ли многократно вызывать opendir() без необходимости сначала вызывать closeir(), потому что я пытаюсь запустить цикл для открытия подкаталогов, когда цикл while, который вызывает readdir() встречает их. И я предполагаю, что закрытие текущего каталога приведет к тому, что я потеряю возможность его читать.


person KenjiOne    schedule 16.11.2009    source источник
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