huponexit 用于非登录 shell

huponexit 用于非登录 shell

这是注销时后台进程是否会收到 SIGHUP?

似乎这只huponexit适用于登录 shell。如何让非登录 shell(例如,在我的终端窗口中启动的 shell)也拥有这种行为?

发送HUP到已启动进程的 bash 的操作按预期进行,但实际上huponexit却没有。

答案1

您可以声明自己的代码在 shell 退出时运行。

trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT

(我之前提出的建议trap 'kill -HUP $$' EXIT在 bash 4.2 中不再起作用,因为如果我理解正确的话,当 bash 已经在处理退出条件时,它会跳过部分正常清理工作,包括 HUP 重新发送。)

答案2

trap 'kill -HUP -$$' exit

我似乎无法在上面添加注释。在前面加上一个负号来表示进程组。我认为这会挂断全部由 shell 生成的子进程,包括孙进程、曾孙进程等等。

相关内容