Commit 4564c08b authored by Benjamin Peterson's avatar Benjamin Peterson

set svn:eol-style on new file

parent 85108e64
"""Script used to test os.kill on Windows, for issue #1220212 """Script used to test os.kill on Windows, for issue #1220212
This script is started as a subprocess in test_os and is used to test the This script is started as a subprocess in test_os and is used to test the
CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler
to be written into the kill target. to be written into the kill target.
See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a
similar example in C. similar example in C.
""" """
from ctypes import wintypes from ctypes import wintypes
import signal import signal
import ctypes import ctypes
# Function prototype for the handler function. Returns BOOL, takes a DWORD. # Function prototype for the handler function. Returns BOOL, takes a DWORD.
HandlerRoutine = wintypes.WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD) HandlerRoutine = wintypes.WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD)
def _ctrl_handler(sig): def _ctrl_handler(sig):
"""Handle a sig event and return 0 to terminate the process""" """Handle a sig event and return 0 to terminate the process"""
if sig == signal.CTRL_C_EVENT: if sig == signal.CTRL_C_EVENT:
pass pass
elif sig == signal.CTRL_BREAK_EVENT: elif sig == signal.CTRL_BREAK_EVENT:
pass pass
else: else:
print("UNKNOWN EVENT") print("UNKNOWN EVENT")
return 0 return 0
ctrl_handler = HandlerRoutine(_ctrl_handler) ctrl_handler = HandlerRoutine(_ctrl_handler)
SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL) SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL)
SetConsoleCtrlHandler.restype = wintypes.BOOL SetConsoleCtrlHandler.restype = wintypes.BOOL
if __name__ == "__main__": if __name__ == "__main__":
# Add our console control handling function with value 1 # Add our console control handling function with value 1
if not SetConsoleCtrlHandler(ctrl_handler, 1): if not SetConsoleCtrlHandler(ctrl_handler, 1):
print("Unable to add SetConsoleCtrlHandler") print("Unable to add SetConsoleCtrlHandler")
exit(-1) exit(-1)
# Do nothing but wait for the signal # Do nothing but wait for the signal
input() input()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment