23

バックグラウンドで実行される python プロセスがあり、スクリプトが終了したときにのみ出力を生成したいと考えています。

def handle_exit():
    print('\nAll files saved in ' + directory)
    generate_output()

atexit.register(handle_exit)

呼び出すKeyboardInteruptと例外が発生し、適切に呼び出されますがsys.exit()、ターミナルから実行すると、handle_exit() を呼び出さずにスクリプトが終了します。handle_exit()kill {PID}

バックグラウンドで実行されているプロセスを終了し、終了するhandle_exit()前に引き続き実行する方法はありますか?

4

3 に答える 3

32

signal.signalを試してください。これにより、あらゆるシステム シグナルをキャッチできます。

import signal

def handle_exit():
    print('\nAll files saved in ' + directory)
    generate_output()

atexit.register(handle_exit)
signal.signal(signal.SIGTERM, handle_exit)
signal.signal(signal.SIGINT, handle_exit)

今、あなたは処刑されることができkill {pid}ますhandle_exit

于 2016-11-29T13:19:12.410 に答える