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

bba*_*a42 33 kill signals

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

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

Gil*_*il' 53

阅读其文档。这是唯一的办法。正如Keith 已经写过的那样SIGHUP 的本意是用户失去了对程序的访问权限,因此交互式程序应该死掉。守护进程——不直接与用户交互的程序——不需要这种行为,而是经常在收到 SIGHUP 时重新加载它们的配置文件。但这些只是约定俗成。

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

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

  • SIGHUP 可以追溯到拨号调制解调器的时代。它表示调制解调器连接挂断。它仍然适用于断开的连接,但现在很少是导致连接断开的挂断。P (3认同)

Kei*_*ith 20

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