2017-05-20 22 views
1

私はログを作成し、pythonスクリプトの強制終了時に更新するようにしました。これは、すべての強制終了を追跡するのに役立ちます。試しましたが、atexit()は正常終了時にのみ実行されます。Pythonスクリプトの強制終了時に関数を実行

+0

スクリプトはどのように終了していますか?キーボードか何か他の人に殺されていますか? –

+0

はい、キーボードが終了します。 –

答えて

1

KeyboardInterrupt例外をキャッチするだけです。

この単純なプログラムははCtrl +Cキーの組み合わせが終了するために押されたときの機能を実行する方法を示しています。

def main(): 
    while True: 
     input('') 

def onexit(): 
    print('on exit') 

try: 
    main() 
except KeyboardInterrupt: 
    onexit() 
+0

Ctrl + Zはどうですか? –

+0

それは終わりではありません。それはプロセスを裏づけるものです。 https://superuser.com/questions/476873/what-is-effect-of-ctrl-z-on-a-unix-linux-application/476874 –

+0

これは、他の(キーボード以外の)シグナルに対しては機能しません(例えばkill-SIGTERMで強制終了させるなど)。 'signal'モジュールを使い、すべての '終了'シグナルを聞くことは、より包括的な解決策です。 – zwer

関連する問題