mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-22 21:32:31 +00:00
python-3.6.zip added from Github
README.cosmo contains the necessary links.
This commit is contained in:
parent
75fc601ff5
commit
0c4c56ff39
4219 changed files with 1968626 additions and 0 deletions
49
third_party/python/Lib/test/win_console_handler.py
vendored
Normal file
49
third_party/python/Lib/test/win_console_handler.py
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
"""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
|
||||
CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler
|
||||
to be written into the kill target.
|
||||
|
||||
See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a
|
||||
similar example in C.
|
||||
"""
|
||||
|
||||
from ctypes import wintypes, WINFUNCTYPE
|
||||
import signal
|
||||
import ctypes
|
||||
import mmap
|
||||
import sys
|
||||
|
||||
# Function prototype for the handler function. Returns BOOL, takes a DWORD.
|
||||
HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD)
|
||||
|
||||
def _ctrl_handler(sig):
|
||||
"""Handle a sig event and return 0 to terminate the process"""
|
||||
if sig == signal.CTRL_C_EVENT:
|
||||
pass
|
||||
elif sig == signal.CTRL_BREAK_EVENT:
|
||||
pass
|
||||
else:
|
||||
print("UNKNOWN EVENT")
|
||||
return 0
|
||||
|
||||
ctrl_handler = HandlerRoutine(_ctrl_handler)
|
||||
|
||||
|
||||
SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
|
||||
SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL)
|
||||
SetConsoleCtrlHandler.restype = wintypes.BOOL
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Add our console control handling function with value 1
|
||||
if not SetConsoleCtrlHandler(ctrl_handler, 1):
|
||||
print("Unable to add SetConsoleCtrlHandler")
|
||||
exit(-1)
|
||||
|
||||
# Awake main process
|
||||
m = mmap.mmap(-1, 1, sys.argv[1])
|
||||
m[0] = 1
|
||||
|
||||
# Do nothing but wait for the signal
|
||||
while True:
|
||||
pass
|
Loading…
Add table
Add a link
Reference in a new issue