別のTMUXウィンドウで起動されたプロセスを同期する方法は?

別のTMUXウィンドウで起動されたプロセスを同期する方法は?

考えてみてください:

tmux split-window -d program1
program2 # this program depends on some side effects produced by program1

この場合、program2準備が整う前に始まりますprogram1program1消費される可能性のある副作用が発生すると、信号/出力が送信されます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

おすすめ記事