2012-08-29 89 views
0

我有一個unix命名管道的問題。 考慮我們有一個程序A,它將輸出寫入管道(考慮P), 和另一個程序(考慮B)使用這個管道作爲輸入文件。問題是如何在程序B失敗時從外部中斷程序A. 的情況與此類似僞腳本:如何使用管道中斷程序

mkfifo P 
A -output P & 
B -input P & 
if ($! != 0) //somehow interrupt A 

回答

2

保持PID:

mkfifo P 
A -output P & 
pidA=$! 
B -input P 
if ($? != 0) 
    kill $pidA 

$!擴展爲最近執行的後臺命令的PID。

$?擴展到退出代碼。

注意這個工作,你不能在後臺運行B,因爲你不能得到它的退出代碼。

如果你仍想在後臺運行,請使用:

(B -input P || kill $pidA) &