为什么subshel​​l无法从父shell捕获信号?

时间:2014-01-23 06:37:40

标签: bash shell

我有2个shell脚本:

# subshell.sh
trap "echo Caught SIGTERM" 15
echo $$
sleep 100000

# parent.sh
setsid sh subshell.sh &
pid=$!
echo "sid=$pid"
sleep 2
# This won't work!
kill -15 -$pid

主要目的是将SIGTERM发送到subshel​​l及其所有子节点。谷歌搜索了一段时间后(bash处理信号的方法有一个棘手的问题),我选择setsid创建一个新会话并发送使用-pid的信号。但是,尽管pid正确,但不会打印该消息。如果我手动执行kill -15 -$pid,这可以工作。那么如何将信号发送到子shell?

1 个答案:

答案 0 :(得分:0)

最后,我设法通过创建另一个子shell ...来完成这项工作,然后在子shell中调用kill -15 -$pid。还是不知道为什么父shell不能这样做