シェルコマンドを引数として渡され、一時ファイルを開き、フォーマットされた文字列を一時ファイルに書き込み、続いてシェルコマンドをバックグラウンドで実行し、出力を一時ファイルに保存する tcl proc を作成しようとしています。同じように。
コマンドをバックグラウンドで実行すると、その直後に proc を呼び出して、別の引数を渡して別のファイルに書き込むことができます。したがって、そのようなコマンドを 100 回実行しても、それらを連続して実行する場合ほど長くはかからないはずです。複数の一時ファイルを最終的に 1 つのファイルに連結できます。
これは、私がやろうとしていることの疑似コードです。
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 を使用しています。