3
我有一個在後臺運行的python進程,我希望它只在腳本終止時才生成一些輸出。當python進程死亡時運行atexit()
def handle_exit():
print('\nAll files saved in ' + directory)
generate_output()
atexit.register(handle_exit)
調用養KeyboardInterupt
例外,sys.exit()
電話handle_exit()
正常,但如果我從終端做kill {PID}
則終止該腳本,而無需調用handle_exit()。
有沒有辦法終止在後臺運行的進程,並且在終止之前仍然運行handle_exit()
?
單獨使用atexit不可能。正如文檔所指出的那樣'當程序被非Python處理的信號終止時,當檢測到Python致命內部錯誤或調用os._exit()時,不會調用通過此模塊註冊的函數。「[here] (https://docs.python.org/2/library/atexit.html) –