收到kill -HUP 时程序的行为?

收到kill -HUP 时程序的行为?

有没有办法找出程序收到终止信号 HUP 时会做什么?
无需简单地运行 ofc 命令:D

例如,
killall -HUP pppd重新启动 pppd
killall -HUP firefox只会杀死 Firefox

答案1

阅读其文档。这是唯一的办法。作为基思已经写过,其本义为叹息是用户失去了对该程序的访问权限,因此交互式程序应该消失。守护进程— 不直接与用户交互的程序 — 不需要这种行为,而是在收到 SIGHUP 时经常重新加载其配置文件。但这些只是惯例。

如果您有来源,您也可以阅读。或者,如果您只有二进制文件,则可以尝试反汇编它,查找为sigaction建立信号处理程序的调用SIGHUP,并尝试找出这些信号处理程序正在做什么。首先安排不向该程序发送 SIGHUP 会更容易。

在任何时间点,给定进程对于特定信号都处于三种状态之一:忽略它、执行默认操作或运行自定义处理程序。许多 unice 允许您使用 来查看进程的信号掩码ps,例如ps sLinux 上的 。这可以告诉您进程是否忽略该信号或将在 SIGHUP 时立即终止,但如果进程设置了处理程序,您将无法判断该处理程序的作用。

答案2

默认操作是在 SIGHUP 时终止进程。请参阅man 7 signal了解更多详情。但程序可以捕获它并为所欲为。由于守护进程永远不应该退出,因此它们通常将 SIGHUP 用于其他目的,例如重新初始化自身(如 pppd 所做的那样)。 Firefox 保留默认操作。

相关内容