
Программа, которая рекурсивно обходит дерево каталогов, должна выяснить, что делать с символическими ссылками (и/или точками соединения в Windows), чтобы избежать попадания в бесконечный цикл, когда символическая ссылка указывает на родительский каталог. Два очевидных варианта:
Полностью пропустите символические ссылки.
Продолжайте следовать им, но отслеживайте все посещенные каталоги и пропускайте их, когда они вот-вот зайдут в бесконечный цикл.
Какой выбор наиболее распространен/ожидаем/предпочтительнее?
решение1
Если вы просто просматриваете, подпишитесь.
Но вы указали, что вам не нужны бесконечные циклы...
чтобы избежать попадания в бесконечный цикл, когда символическая ссылка указывает на родительский каталог
Если вы ищете рекурсивно в ширину, следуйте. В глубину — пропустите.
Если вы подсчитываете размеры файлов, пропустите этот пункт.
Отслеживание часто является оптимизацией, а не реализация. Конечно, лучше иметь его.