【发布时间】:2023-04-04 18:56:01
【问题描述】:
我在 bash 中有以下内容:
富 |酒吧
我希望foo 在脚本终止时死掉(使用 TERM 信号)。不幸的是,他们都没有死。我试过这个:
exec foo | bar
这完全没有取得任何成果。然后我尝试了这个:
function run() {
"$@" &
pid=$!
trap "kill $pid" EXIT
wait
}
run foo | bar
再一次,什么都没有。现在我多了一个进程,当我终止父进程时,它们都没有死。
【问题讨论】:
-
在单独的进程组中运行
foo|bar可能会有所帮助。 related -
您能给我们举个例子吗?
bash -c 'sleep 50 | sleep 50' & kill $!将正确终止两个睡眠... -
@Camusensei 不,它没有。试试这个:
bash -c 'sleep 50 | sleep 50' & sleep 1; kill $! -
确实如此。我将答案更改为有效的答案,请查看。