考えてみてください:
tmux split-window -d program1
program2 # this program depends on some side effects produced by program1
この場合、program2
準備が整う前に始まりますprogram1
。program1
消費される可能性のある副作用が発生すると、信号/出力が送信されますprogram2
。
program1
私の質問:始める前に準備ができるまで待つシェルスクリプトをどのように書くのですかprogram2
?
注意:出力は消費されないため、program2
プロセスprogram1
をパイプで接続してこの問題を解決することはできません。
ベストアンサー1
解決策が見つかりましたここ。最後に、これはTMUXソリューションではありません(最初は、tmuxがそのウィンドウで実行されているプロセスを同期させるメカニズムを持っていると思いました)。
答えは、名前付きパイプを使用することです。準備ができれば出力が送信されるのでprogram1
必要なのは次のとおりです。
mkfifo /tmp/pipe
tmux split-window -d "program1 > /tmp/pipe 2>&1"
signal=`cat /tmp/pipe`
program2 # This will only run after program1 has output something