この件に関しては、this blog postを参照してください。 Windowsではwin32apiを使用し、LinuxではSIGTERM
シグナルが捕捉されます。その動作を確認するには、以下のように、on_exit
ハンドラのファイルに何かを書き込むと便利です。スニペットは非常に簡単であるので、私はちょうどそれ(ブログの作者への完全な小道具)が含まれます:あなたはそのプログラムを実行している端末を閉じます場合
import os, sys
def set_exit_handler(func):
if os.name == "nt":
try:
import win32api
win32api.SetConsoleCtrlHandler(func, True)
except ImportError:
version = '.'.join(map(str, sys.version_info[:2]))
raise Exception('pywin32 not installed for Python ' + version)
else:
import signal
signal.signal(signal.SIGTERM, func)
if __name__ == '__main__':
def on_exit(sig, func=None):
f = open('log.txt', 'w')
f.write('shutdown...')
f.close()
sys.exit()
set_exit_handler(on_exit)
print 'Press to quit'
raw_input()
print 'quit!'
を、それがコールバック機能を検証するためのファイルを作成します。
出典
2011-12-20 10:51:40
jro