2014-01-28 117 views
1

我有一個python 3腳本,它在啓動時運行。它可以在退出時使用一些我想要的資源。Python檢測到kill請求

我該如何管理該腳本將要退出,如果我用kill -6 $PID將其終止。

或有關如何發送退出命令並在腳本中檢測到它的任何其他想法。

回答

9

signal模塊是您正在尋找的。

import singal 

def handler(signum, frame): 
    print 'Signal handler called with signal', signum 

signal.signal(signal.SIGABRT, handler) 

在處理函數中,您可以用sys.exit()來終止。

但是,使用SIGINT(這是在終端中按Ctrl + C時發生的情況)或SIGTERM終止程序時更常見。如果你沒有清理代碼,你不需要編寫一行代碼來處理SIGINT - 默認情況下它會產生一個KeyboardInterrupt異常,如果沒有被捕獲(這就是爲什麼你不應該使用空白except:語句的原因),導致你的程序終止。

+1

我決定在KeyboardInterrupt中使用SIGINT。非常感謝 –