2014-03-26 57 views
2

shbash,當第二個進程退出時,如何退出管道中的第一個進程?當管道存在第二個進程時退出第一個進程

我用下面從網絡獲取輸入:

$ nc -l 1234 | myprog 

myprog退出由於內部原因,但nc繼續生活。是否有可能停止nc

+0

也許你可以使用http://stackoverflow.com/questions/1908610/how-to-get-pid-of-background-process – Nit

+0

我該怎麼做與管道(最好在一條線)? –

+0

有關某些選項,請參閱http://www.tldp.org/LDP/abs/html/io-redirection.html。 – Nit

回答

1

在bash你可以用&控制操作叉過程,並得到孩子的PID閱讀$!。所以,最簡單的解決方案可能是

$ (nc -l 1234 & echo $! > /tmp/myprog_kill_pid) | myprog; kill $(</tmp/myprog_kill_pid); rm /tmp/myprog_kill_pid 

當然,這是不是很漂亮,不適合多個正在運行的實例...但你可以從這個開始。

+0

我對我的具體問題做了一個解決方法,但是謝謝你告訴我如何使用&來分叉。 –

相關問題