1
/tmp/trap.sh帮助需要SIGQUIT Bash中
#! /bin/bash
echo parent
trap signalCaught HUP INT QUIT TERM
signalCaught() {
echo "SIGNAL DETECTED I am the parent."
}
SLEEP=10
for i in $(seq $SLEEP -1 0); do
echo "$i"
sleep 1
done
/tmp/trap2.sh 2>&1 | tee -ai /tmp/garbage.txt
echo " --- terminating \"$0\" "
/tmp/trap2.sh
#! /bin/bash
echo child
trap 'echo signal caught in child' HUP INT QUIT TERM
read JUNK
SLEEP=10
echo sleeping for $SLEEP seconds
sleep $SLEEP
echo " --- terminating \"$0\" "
当我运行/tmp/trap.sh,并允许它调用trap2 .sh,SIGQUIT只被父进程捕获(trap.sh)。 “回声信号在小孩”没有回应。我假设,那么,那个孩子没有抓住SIGQUIT。
是不是有一个孩子不接受QUIT的理由?它确实捕获INT
它是如何传递到“根”的过程,而不是到前台进程,即实际死亡,如果你的人_haven't_设置信号处理程序?为什么他看到SIGINT有不同的行为?请提供文件。 – Random832 2011-04-28 00:55:54
感谢您挑战我的草率思维。 – 2011-04-28 01:11:16
我已经完成了一些研究,看起来有些事情需要处理组和信号传递给组中的每个进程......可以显示每个进程的进程组ID吗? – Random832 2011-04-28 01:16:01