huponexit用于非loginshell

这是一个后续做后台进程得到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,包括孙辈,曾孙,等等。