这是一个后续做后台进程得到SIGHUP注销时? 。
似乎huponexit
只适用于loginshell。 如何获得非loginshell的行为,例如在terminal窗口中启动的shell?
发送HUP
到进程已经开始的bash工作正常,但是huponexit
没有。
您可以声明自己的代码,以便在shell退出时运行。
trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT
(我之前提出的trap 'kill -HUP $$' EXIT
并不适用于bash 4.2,因为如果我正确理解了源代码,bash会跳过正常清理的一部分,包括HUP重新发送,当它正在处理退出条件时。 )
trap 'kill -HUP -$$' exit
我似乎无法添加上面的评论。 前缀负号表示进程组。 我认为这将挂起所有由shell产生的subprocess,包括孙辈,曾孙,等等。