Должны ли программы следовать символическим ссылкам?

Должны ли программы следовать символическим ссылкам?

Программа, которая рекурсивно обходит дерево каталогов, должна выяснить, что делать с символическими ссылками (и/или точками соединения в Windows), чтобы избежать попадания в бесконечный цикл, когда символическая ссылка указывает на родительский каталог. Два очевидных варианта:

  1. Полностью пропустите символические ссылки.

  2. Продолжайте следовать им, но отслеживайте все посещенные каталоги и пропускайте их, когда они вот-вот зайдут в бесконечный цикл.

Какой выбор наиболее распространен/ожидаем/предпочтительнее?

решение1

Если вы просто просматриваете, подпишитесь.

Но вы указали, что вам не нужны бесконечные циклы...

чтобы избежать попадания в бесконечный цикл, когда символическая ссылка указывает на родительский каталог

Если вы ищете рекурсивно в ширину, следуйте. В глубину — пропустите.

Если вы подсчитываете размеры файлов, пропустите этот пункт.

Отслеживание часто является оптимизацией, а не реализация. Конечно, лучше иметь его.

Связанный контент