+++ /dev/null
-"""Script used to test os.kill on Windows, for issue #1220212\r
-\r
-This script is started as a subprocess in test_os and is used to test the\r
-CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler\r
-to be written into the kill target.\r
-\r
-See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a\r
-similar example in C.\r
-"""\r
-\r
-from ctypes import wintypes, WINFUNCTYPE\r
-import signal\r
-import ctypes\r
-import mmap\r
-import sys\r
-\r
-# Function prototype for the handler function. Returns BOOL, takes a DWORD.\r
-HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD)\r
-\r
-def _ctrl_handler(sig):\r
- """Handle a sig event and return 0 to terminate the process"""\r
- if sig == signal.CTRL_C_EVENT:\r
- pass\r
- elif sig == signal.CTRL_BREAK_EVENT:\r
- pass\r
- else:\r
- print("UNKNOWN EVENT")\r
- return 0\r
-\r
-ctrl_handler = HandlerRoutine(_ctrl_handler)\r
-\r
-\r
-SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler\r
-SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL)\r
-SetConsoleCtrlHandler.restype = wintypes.BOOL\r
-\r
-if __name__ == "__main__":\r
- # Add our console control handling function with value 1\r
- if not SetConsoleCtrlHandler(ctrl_handler, 1):\r
- print("Unable to add SetConsoleCtrlHandler")\r
- exit(-1)\r
-\r
- # Awaken mail process\r
- m = mmap.mmap(-1, 1, sys.argv[1])\r
- m[0] = '1'\r
-\r
- # Do nothing but wait for the signal\r
- while True:\r
- pass\r