Shell 如何使用管道中断程序
我对unix命名管道有问题。 考虑我们有一个程序,把他的输出写入管道(考虑P), 另一个程序(考虑B)使用这个管道作为输入文件。问题是当程序B失败时,我如何从外部中断程序A。 情况类似于此伪脚本:Shell 如何使用管道中断程序,shell,Shell,我对unix命名管道有问题。 考虑我们有一个程序,把他的输出写入管道(考虑P), 另一个程序(考虑B)使用这个管道作为输入文件。问题是当程序B失败时,我如何从外部中断程序A。 情况类似于此伪脚本: mkfifo P A -output P & B -input P & if ( $! != 0 ) //somehow interrupt A 保持PID: mkfifo P A -output P & pidA=$! B -input P if ( $? != 0 )
mkfifo P
A -output P &
B -input P &
if ( $! != 0 ) //somehow interrupt A
保持PID:
mkfifo P
A -output P &
pidA=$!
B -input P
if ( $? != 0 )
kill $pidA
$代码>扩展到最近执行的后台命令的PID
$?
展开为退出代码
注意:要使其工作,您不能在后台运行B
,因为您无法获取退出代码
如果仍要在后台运行,请使用:
( B -input P || kill $pidA ) &