Я пытаюсь создать tcl proc, которому передается команда оболочки в качестве аргумента, а затем открывается временный файл и записывает отформатированную строку во временный файл, после чего выполняется команда оболочки в фоновом режиме и сохраняется вывод во временный файл также.
Запуск команды в фоновом режиме заключается в том, что процесс может быть вызван сразу после этого с переданным ему другим аргументом, записывающим в другой файл. Таким образом, выполнение сотни таких команд не должно занимать столько времени, сколько потребовалось бы их последовательному выполнению. Наконец, несколько временных файлов можно объединить в один файл.
Это псевдокод того, что я пытаюсь сделать.
proc runthis { args }
{
set date_str [ exec date {+%Y%m%d-%H%M%S} ]
set tempFile ${date_str}.txt
set output [ open $tempFile a+ ]
set command [concat exec $args]
puts $output "### Running $args ... ###"
<< Run the command in background and store output to tempFile >>
}
Но как мне убедиться, что фон задачи выполнен правильно? Что нужно сделать, чтобы обеспечить правильное закрытие нескольких временных файлов?
Любая помощь приветствуется. Я новичок в tcl и пытаюсь понять это. Я читал об использовании потоков в tcl, но я работаю с более старой версией tcl, которая не поддерживает потоки.
proc
(ну, между ними могут быть заключены символы новой строки в кавычках, например, в списке аргументов или с обратной косой чертой, но это уточнение, на которое не обращает внимания большинство людей). не заморачиваюсь). - person Donal Fellows   schedule 17.12.2012clock format
иclock seconds
для выполнения работыexec date
. Имейте в виду, что для разделения вывода из разных прогонов вам также нужен порядковый номер (конечно, если два прогона запускаются в одну и ту же секунду). - person Donal Fellows   schedule 17.12.2012file tempname
начиная с версии 8.6 илиmkstemp(3)
-эмуляция кода; как личный опыт, я считаю, что версия Стью вполне подходит для старых Tcls). - person kostix   schedule 18.12.2012