Если вы рекурсивно обойдете дерево каталогов очевидным способом, вы столкнетесь с проблемой бесконечной рекурсии, когда символическая ссылка будет указывать на родительский каталог.
Очевидным решением было бы просто проверить символические ссылки и вообще не следовать им. Но это может быть неприятным сюрпризом для пользователя, который не ожидает, что поведение, которое ведет себя для других целей, таких как совершенно нормальный каталог, будет игнорироваться.
Альтернативное решение может состоять в том, чтобы сохранить хеш-таблицу всех посещенных к настоящему времени каталогов и использовать ее для проверки циклов. Но для этого потребуется некоторое каноническое представление, какой-то способ идентифицировать каталог, который вы просматриваете в данный момент (независимо от пути, по которому вы его достигли).
Считают ли пользователи Unix второе решение менее удивительным?
Если так, есть ли способ получить такое каноническое представление / идентичность каталога, который переносим в системах Unix? (Я бы хотел, чтобы он работал в Linux, BSD, Mac OS, Solaris и т. Д. Я ожидаю, что придется написать отдельный код для Windows.)