SIGHUP
信号,代表 "挂起"(hang up)。在与终端有关的会话中,SIGHUP
表示终端连接的丢失或关闭。
主要用途
-
终端断开:
- 当一个用户登出或一个与进程关联的终端关闭时,系统会向该进程发送
SIGHUP
信号。通知进程它的控制终端已不再可用。
- 当一个用户登出或一个与进程关联的终端关闭时,系统会向该进程发送
-
重新加载配置:
- 一些守护进程(daemon)会捕获
SIGHUP
信号作为一种重新加载配置文件的方法。例如,一个 web 服务器在收到SIGHUP
信号后,可能会重新读取其配置而不需要完全重启。这种行为通常是在程序设计时明确实现的。
- 一些守护进程(daemon)会捕获
常见示例
-
忽略
SIGHUP
:有时,用户希望进程在终端关闭后继续运行。为了达到这个目的,进程可以通过调用
signal(SIGHUP, SIG_IGN)
来忽略该信号。 -
使用
nohup
命令 :在 Linux 中,经常使用
nohup
命令来运行一个进程,使其在用户登出后仍然继续运行。bashnohup command &
nohup
将标准输出重定向到nohup.out
文件,并防止进程接收SIGHUP
信号。
信号编号
在大多数系统中,SIGHUP
信号的编号是 1。
结论
在终端中用来告诉进程终端关闭,收到信号的进程默认动作是结束自己;守护进程收到这种信号是重载配置文件的信号。