如何使用管道中断程序

时间:2012-08-29 12:58:31

标签: shell

我遇到unix命名管道的问题。 考虑我们有一个程序A将其输出写入管道(考虑P), 另一个程序(考虑B)使用此管道作为输入文件。问题是当程序B出现故障时如何从外部中断程序A. 情况类似于这个伪脚本:

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

1 个答案:

答案 0 :(得分:2)

保持PID:

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

$!扩展为最近执行的后台命令的PID。

$?扩展为退出代码。

请注意,为了实现此功能,您无法在后台运行B,因为您无法获取退出代码。

如果您仍想在后台运行它,请使用:

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