Comment synchroniser les process démarrés dans différents volets TMUX?

Considère ceci:

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

Dans ce cas, le program2 démarrera avant que le program1 soit prêt. program1 enverra des signaux / sorties quand il a produit des effets secondaires qui peuvent être consommés par program2 .

Ma question: Comment puis-je écrire un script shell qui attendra que program1 soit prêt avant de lancer le program2 ?

Observation: le program2 ne consum pas la sortie program1 , donc ceci n'est pas résolu en connectant les process avec un pipe.

J'ai trouvé la solution ici . En fin de count, ce n'était pas une solution TMUX (au début, je pensais que tmux aurait un mécanisme pour synchroniser les process qui s'exécutent dans ses windows)

La réponse utilise des pipes nommés. Puisque le program1 envoie la sortie quand il est prêt, tout ce dont j'ai besoin est quelque chose comme ceci:

 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 

Utiliser un outil comme FLOM (Free LOck Manager) devrait vous permettre d'exécuter quelque chose comme:

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

si "program1" commence avant "program2", le comportement attendu sera:

  1. flom va créer une ressource logique et la verrouiller exclusivement pour "program1"
  2. flom mettra en queue sur la même ressource logique pour "program2" et attendra la fin de "program1".