我遇到unix命名管道的问题。 考虑我们有一个程序A将其输出写入管道(考虑P), 另一个程序(考虑B)使用此管道作为输入文件。问题是当程序B出现故障时如何从外部中断程序A. 情况类似于这个伪脚本:
mkfifo P
A -output P &
B -input P &
if ( $! != 0 ) //somehow interrupt A
答案 0 :(得分:2)
保持PID:
mkfifo P
A -output P &
pidA=$!
B -input P
if ( $? != 0 )
kill $pidA
$!
扩展为最近执行的后台命令的PID。
$?
扩展为退出代码。
请注意,为了实现此功能,您无法在后台运行B
,因为您无法获取退出代码。
如果您仍想在后台运行它,请使用:
( B -input P || kill $pidA ) &