我想在 Windows 上终止 python 脚本时做点什么。
# coding:utf-8
import ctypes
import os
def set_exit_handler():
def on_exit(event):
print '=====exit====='
_BOOL = ctypes.c_long
_DWORD = ctypes.c_ulong
_kernel32 = ctypes.windll.kernel32
_SIGNAL_HANDLER = ctypes.WINFUNCTYPE(_BOOL, _DWORD)
_kernel32.SetConsoleCtrlHandler.argtypes = [_SIGNAL_HANDLER, _BOOL]
_kernel32.SetConsoleCtrlHandler.restype = _BOOL
h = _SIGNAL_HANDLER(on_exit)
if not _kernel32.SetConsoleCtrlHandler(h, True):
raise ctypes.WinError()
print 'register success'
if __name__ == '__main__':
set_exit_handler()
while(1):
pass
请检查我的示例代码。它有问题。当我按 CTRL+C 或关闭 cmd 窗口时。on_exit() 将不会被执行。并且窗口弹出“python.exe 已停止工作,windows 正在检查问题的解决方案”
请在http://msdn.microsoft.com/en-us/library/windows/desktop/ms685049%28v=vs.85%29.aspx检查 windows api
在此先感谢,抱歉英语不好。