#tcl
#tcl
Вопрос:
У меня есть готовый скрипт в tcl для запуска, но до сих пор я делаю это вручную, потому что мне нужно дождаться завершения генерации некоторого файла.
Как автоматизировать этот процесс, чтобы при появлении файла сценарий tcl запускался автоматически?
Комментарии:
1. Если вы используете Linux, доступен пакет inotify.
2. Да, я использую Linux. Я рассмотрю то, что вы предложили. Спасибо!
3. Проблема в том, что мне не разрешено добавлять какой-либо внешний пакет как таковой. Итак, если у вас есть какой-либо альтернативный способ, пожалуйста, проведите меня через это.
Ответ №1:
Предполагая, что в просматриваемом каталоге обычно нет файлов, это эффективный способ периодического опроса каталога:
proc waitForFiles {directory} {
set files [glob -directory $directory -nocomplain]
if {[llength $files] == 0} {
doSomethingHere
}
# check again in 100 milliseconds
after 100 [list waitForFiles $directory]
}
Комментарии:
1. Команда after, которую я узнал из этого комментария, полезна, но что, если я ожидаю определенное имя файла, и если этот файл появится, я продолжу свой следующий сценарий / команду оттуда. Могу ли я интегрировать эту концепцию в вышеупомянутый код?
2. Измените условие на
if {$expectedFile in $files}
илиif {[file exists [file join $directory $expectedFile]]}
3. Большое спасибо, Гленн, за быстрый ответ!! Это сработало.
4. Если вы точно знаете, какой файл будет вызываться,
file exists
илиfile readable
это приемлемый выбор, и оба они дешевле, чемglob
.