我正在尝试编写一个邮件程序,其中可能包含用户不希望在 SSH/telnet 连接中断时丢失的数据。会SIGHUP
被发送到进程吗?毕竟,这是“挂断”信号……
答案1
默认情况下,该进程将发送一个SIGHUP
.默认信号处理程序(陷阱)将相对优雅地关闭程序,但不会节省用户的工作。
SIGHUP
在您的情况下,我会让程序包含一个陷阱例程,该例程在收到a 时保存用户的工作。您可以捕获并处理除 之外的所有信号SIGKILL
。您可能还想针对SIGTERM
中断运行相同的例程。
还有其他机制可以用来避免获取SIGHUP
信号,但处理信号是最简单和最安全的。如果其他方法失败,或者SIGHUP
与命令一起发送,kill
您的进程仍然会关闭而不保存工作。