在子/后台进程中运行时,我无法捕获信号。
这是我的简单 bash 脚本:
#!/bin/bash
echo "in child"
trap "got_signal" SIGINT
function got_signal {
echo "trapped"
exit 0
}
while [ true ]; do
sleep 2
done
当运行这个和以后做
kill -SIGINT (pid)
一切都按预期工作,它打印trapped
并退出。
现在,如果我从这样的父脚本启动相同的脚本:
#!/bin/bash
echo "starting the child"
./child.sh &
然后孩子不再捕获信号......?
更改为使用 SIGTERM 而不是 SIGINT 后,它似乎工作正常......?