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 后臺進程企圖從控制終端寫
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容