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