私が達成したいのは、bashスクリプトであるか、2つの端末ベースのアプリケーションを並列に実行できるbash行の方が良いです。私はこのコマンドについて知っていますが、&
私の;
場合、両方のコマンドはターミナルを開いたままにし、正常に動作するために互いに必要であるため動作しません。これは極端なケースのように見えるかもしれませんが、私の具体的なユースケースは非常に簡単で、多くの同様の状況で役に立つと思います。
私が望むのはswoプロトコルを使用してUSBポートからメッセージを解析することですので、やや不快な解決策は次のとおりです。
- ターミナル1を開き、実行します
openocd -f connect_swo.cfg
(ターミナル1が停止します)。 - ターミナル2を開き、実行します
python3 swo_parser.py
(ターミナル2が停止し、ターミナル1が値を印刷します)。 - その後、2つの別々の信号で両方の
ctrl+c
コマンドを終了します。
予想される解決策は次のようになります。
- 魔法コマンドを実行して、リンクされたセッションとは別のセッションで自分のコマンドをすべて開きます。
- 1 つのコマンドで
ctrl +c
2 つのコマンドが終了します。
PS:スーパーユーザーに問題を移す必要がある場合は、コメントしてください。
答え1
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/
答え2
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
答え3
同様のプログラムを使用してください同時に