Python捕捉系統信號


#!/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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM