kok
Интересующийся
Offline
|
 |
« : 03-12-2009 20:51 » |
|
Подскажите, как можно определить глубину рекурсии символических связей для ос.
|
|
|
|
|
Записан
|
|
|
|
|
RXL
|
 |
« Ответ #1 : 03-12-2009 21:00 » |
|
Формально - никак. Только самому пройтись по ссылкам и проверить, когда прервется цепь.
|
|
|
|
|
Записан
|
|
|
|
kok
Интересующийся
Offline
|
 |
« Ответ #2 : 03-12-2009 23:14 » |
|
Пройтись по ссылкам. Хорошо, а поподробнее, что ты подразумеваешь под этим?
|
|
|
|
« Последнее редактирование: 04-12-2009 05:55 от Sel »
|
Записан
|
|
|
|
|
RXL
|
 |
« Ответ #3 : 04-12-2009 05:05 » |
|
X-krol-X, опиши сперва задачу подробнее: для чего и что сам придумал.
|
|
|
|
|
Записан
|
|
|
|
kok
Интересующийся
Offline
|
 |
« Ответ #4 : 05-12-2009 10:40 » |
|
в общем, мне просто надо знать глубину рекурсии для до того, чтоб избежать зависания программ. В общем, я создаю символьные связи, ставлю счетчик, и он мне выдает огромное число, но насколько я знаю, размер глубины - порядка 3 тысяч.
|
|
|
|
« Последнее редактирование: 05-12-2009 10:44 от Sel »
|
Записан
|
|
|
|
|
RXL
|
 |
« Ответ #5 : 05-12-2009 10:46 » |
|
Ссылки односторонние. Т.ч. пройти по цепочке можно только в одну сторону. Если нужно проверить кардинально, то рекурсивно сканируйте все дерево каталогов, составляйте карту и запоминайте имена ссылок и перенаправления, а потом проверяйте, нет ли колец, глубину и все, что угодно.
|
|
|
|
|
Записан
|
|
|
|
|
Serg79
|
 |
« Ответ #6 : 24-12-2009 20:49 »  |
|
Стандарт POSIX.1 определяет минимальные требования на некоторые константы POSIX совместимых систем. В частности параметр "Количество переходов по символическим ссылкам допустимого в строке пути" (_POSIX_SYMLOOP_MAX) должен быть равен не менее 8. Но фактическое значение может отличатся от системы к системе. На этапе выполнения, это значения предела можно получить с помощью функции sysconf передав ей _SC_SYMLOOP_MAX.
Но это все касается "строки пути к файлу", если же просто выполнять переходы по данным ссылкам, то можно зациклится на всегда. В этом случае, как советует RXL, остается только вручную отслеживать свое местонахождение и применять разные способы на определение зацикливания.
|
|
|
|
|
Записан
|
|
|
|
|