あるコマンドの出力は別のコマンドにパイプされます。両方のコマンドを閉じる方法は?

あるコマンドの出力は別のコマンドにパイプされます。両方のコマンドを閉じる方法は?

提案通りQt Assistantに電話しました。スタックオーバーフロー:

nc -lkU ~/.assistantfifo | assistant -enableRemoteControl &

Qt Assistantウィンドウが開き、呼び出すと、jobs次のものが返されます。

[1]  + running    nc -lkU ~/.assistantfifo | assistant -enableRemoteControl

次にQt Assistantを閉じます(「x」をクリックするだけです)。これで、jobs次を返します。

[1]  + running    nc -lkU ~/.assistantfifo | 
       done       assistant -enableRemoteControl

したがって、nc作業を続けるにはkillall nc

ncQt Assistantを閉じたときにこれをどのように実行できますか?それとも何か他のことをする必要がありますか?

答え1

実行中のコマンド(nc別名netcat)は、このフラグを使用して実行されたときに入力を受け取ります-l。通常、受信モードのnetcatはファイル終了文字を受け取ると終了しますが、この-kフラグはこれを防ぎます。つまり、コマンドの呼び出し方法により、netcatはユーザーが終了するまで終了しません。

よりマニュアルページより多くの情報を知りたいです。

答え2

2番目のプロセスを分離するには、次のようにグループ化する必要があります。

$ ( nc -lkU ~/.assistantfifo | assistant -enableRemoteControl ) &

それ以外の場合は動作しません。これら2つのプロセスを分離するには中括弧が必要です。

関連情報