#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal
import sys
"""
Python捕捉中斷,我們編寫程序有時候會用到死循環,在這種情況下我們可以通過Ctrl+C來進行終止,普通程序可以,但是
有時候我們在程序中會打開很多資源,比如文件句柄,網絡連接等,我們希望捕獲中斷然后處理一下這些資源對其進行釋放
然后再推出程序,這時候就需要用到信號捕捉。
最簡單的就是使用 KeyboardInterrupt 死循環放在一個try語句里面然后捕捉KeyboardInterrupt異常,
這種只能針對KeyboardInterrupt也就是按下Ctrl+c這種情況,如果相對其他情況則不行。
"""
# 信號處理程序
def sigintHandler(signum, frame):
print("中斷發生。")
# 需要最后做的事情
print("執行最后的清理工作。")
exit()
def main():
# 信號捕捉程序必須在循環之前設置
signal.signal(signal.SIGINT, sigintHandler) # 由Interrupt Key產生,通常是CTRL+C或者DELETE產生的中斷
signal.signal(signal.SIGHUP, sigintHandler) # 發送給具有Terminal的Controlling Process,當terminal 被disconnect時候發送
signal.signal(signal.SIGTERM, sigintHandler) # 請求中止進程,kill命令缺省發送
print("Task started....")
while True:
pass
if __name__ == "__main__":
try:
main()
finally:
sys.exit()