2
在sh
或bash
,當第二個進程退出時,如何退出管道中的第一個進程?當管道存在第二個進程時退出第一個進程
我用下面從網絡獲取輸入:
$ nc -l 1234 | myprog
myprog
退出由於內部原因,但nc
繼續生活。是否有可能停止nc
?
在sh
或bash
,當第二個進程退出時,如何退出管道中的第一個進程?當管道存在第二個進程時退出第一個進程
我用下面從網絡獲取輸入:
$ nc -l 1234 | myprog
myprog
退出由於內部原因,但nc
繼續生活。是否有可能停止nc
?
在bash你可以用&控制操作叉過程,並得到孩子的PID閱讀$!。所以,最簡單的解決方案可能是
$ (nc -l 1234 & echo $! > /tmp/myprog_kill_pid) | myprog; kill $(</tmp/myprog_kill_pid); rm /tmp/myprog_kill_pid
當然,這是不是很漂亮,不適合多個正在運行的實例...但你可以從這個開始。
我對我的具體問題做了一個解決方法,但是謝謝你告訴我如何使用&來分叉。 –
也許你可以使用http://stackoverflow.com/questions/1908610/how-to-get-pid-of-background-process – Nit
我該怎麼做與管道(最好在一條線)? –
有關某些選項,請參閱http://www.tldp.org/LDP/abs/html/io-redirection.html。 – Nit