#tcl #symlink #filemtime
#tcl #символическая ссылка #filemtime
Вопрос:
file mtime
может использоваться для установки времени модификации файла. Но если это символическая ссылка, она установит mtime цели. Как мне установить mtime самой символической ссылки?
Ответ №1:
Безусловно, самым простым подходом будет запуск внешней команды:
proc SetMtime {filename timestamp} {
# A little bit of type enforcement; it's not necessary, but avoids potential trouble
exec touch -h -t [expr {int($timestamp)}] [file normalize $filename]
}
Это потому, что Tcl не предоставляет никакого собственного доступа к utimensat(2)
системному вызову (или его оболочке lutimes(3)
). Вы могли бы создавать свои собственные функции доступа в расширении Tcl (либо напрямую, либо с помощью Critcl или SWIG), но для случайной установки одной ссылки проще всего вызвать touch
с -h
помощью опции.
Комментарии:
1. Моя причина для изучения этого отчасти заключается в
-h
том, что он недоступен во всех реализацияхtouch
.2. Да, но в операционных системах, где она отсутствует, это, вероятно, потому, что базовая ОС также не поддерживает эту функцию. На данный момент на самом деле нет никакого обходного пути.