Каталог рекурсионные и симлизованные ссылки

Если вы рекурсивно пересекаете дерево каталогов по очевидным методам, вы столкнулись с бесконечными рекурсией, когда SymLink указывает на родительский каталог.

Очевидное решение было бы просто проверить для SymLinks и не следовать за ними вообще. Но это может быть неприятным сюрпризом для пользователя, который не ожидает, что ведет себя для других целей, как совершенно нормальный каталог, который будет молча игнорировать.

Альтернативное решение может заключаться в том, чтобы сохранить хеш-таблица всех каталогов, которые до сих пор посещаются, и используйте это для проверки циклов. Но это потребуется там, чтобы быть каноническим представлением, какой-то способ получить удостоверение личности, из каталога, который вы в настоящее время смотряте (независимо от пути, к которому вы его достигли).

Пользователи UNIX обычно относятся к второму решению менее удивительным?

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

7
задан rwallace 11 September 2011 в 10:54
поделиться