私が達成したいのは、bashスクリプト、または2つの端末ベースのアプリを並行して実行できる単一のbashラインです。私はコマンド&
と;
を知っていますが、私の場合、両方のコマンドが端末を開いたままにし、互いに正しく実行する必要があるため、これらは適用できません。エッジケースのように見えるかもしれませんが、私の特定のユースケースは非常に単純であり、多くの同様のケースで十分に役立つと思います。
私がやろうとしているのは、swoプロトコルを使用するUSBポートからのメッセージを解析することです。したがって、私の非常に厄介な回避策は次のとおりです。
openocd -f connect_swo.cfg
を実行します(ターミナル1がハングします)python3 swo_parser.py
を実行します(ターミナル2がハングし、ターミナル1が値を出力します)ctrl+c
信号で両方のコマンドを終了します予想される解決策は次のようになります。
ctrl +c
で両方のコマンドを終了しますPS:質問をスーパーユーザーに移動する必要があるかどうかコメントしてください
GNU Parallelを使用すると、次のことができるはずです。
parallel --tty -j0 ::: 'openocd -f connect_swo.cfg' 'python3 swo_parser.py'
GNU Parallelがまだインストールされていない場合: https://oletange.wordpress.com/2018/03/28/excuses-for-not-installing-gnu-parallel /
同時に のようなプログラムを使用してください
openocd
が絶対にstdinに接続されたTTYを必要とし、Pythonスクリプトをopenocd
の後に実行する必要がある場合は、sleep
を使用してスクリプト実行の開始を遅らせることにより、実行の順序を逆にすることができます。
(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg
独身者 CtrlC 両方を終了することはありませんが、trap
sを使用してそれを回避する方法があるかもしれません。または次のようなもの:
(sleep 5 ; python3 swo_parser.py) & openocd -f connect_swo.cfg
kill %1