Python中使用signal捕获关闭信号

Python 捕获信号示例

通常用于循环执行的服务中。直接插入以下代码

import signal
def shutdownFunction(signalnum, frame):
    pass
for sig in [signal.SIGINT, signal.SIGHUP, signal.SIGTERM, signal.SIGKILL]:
    signal.signal(sig, shutdownFunction)

具体的 signal 使用参见这篇文章。
对于*nix系统,主要捕获这下面的退出信号即可:

[
signal.SIGINT, # 键盘中 Ctrl-C 组合键信号
signal.SIGHUP, # nohup 守护进程发出的关闭信号
signal.SIGTERM, # 命令行数据 kill pid 时的信号
]

Linux 部分终止信号说明

  • 信号 值 处理动作 发出信号的原因
SIGHUP 1 A 终端挂起或者控制进程终止 
SIGINT 2 A 键盘中断(如break键被按下) 
SIGQUIT 3 C 键盘的退出键被按下 
SIGILL 4 C 非法指令 
SIGABRT 6 C 由abort(3)发出的退出指令 
SIGFPE 8 C 浮点异常 
SIGKILL 9 AEF Kill信号 
SIGSEGV 11 C 无效的内存引用 
SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道 
SIGALRM 14 A 由alarm(2)发出的信号 
SIGTERM 15 A 终止信号 
SIGUSR1 30,10,16 A 用户自定义信号1 
SIGUSR2 31,12,17 A 用户自定义信号2 
SIGCHLD 20,17,18 B 子进程结束信号 
SIGCONT 19,18,25 进程继续(曾被停止的进程) 
SIGSTOP 17,19,23 DEF 终止进程 
SIGTSTP 18,20,24 D 控制终端(tty)上按下停止键 
SIGTTIN 21,21,26 D 后台进程企图从控制终端读 
SIGTTOU 22,22,27 D 后台进程企图从控制终端写

你可能感兴趣的:(Python中使用signal捕获关闭信号)