Mercurial > cpython-lru_cache-weakref
annotate Lib/test/win_console_handler.py @ 65035:87f4b32905df 2.7
Cosmetic fix to use print function.
| author | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> |
|---|---|
| date | Fri, 01 Oct 2010 10:48:47 +0000 |
| parents | a430f8fec4a0 |
| children | acdb32005c0a |
| rev | line source |
|---|---|
|
60199
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
1 """Script used to test os.kill on Windows, for issue #1220212 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
2 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
3 This script is started as a subprocess in test_os and is used to test the |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
4 CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
5 to be written into the kill target. |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
6 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
7 See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
8 similar example in C. |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
9 """ |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
10 |
|
65017
a430f8fec4a0
Merged revisions 85109 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60371
diff
changeset
|
11 from ctypes import wintypes, WINFUNCTYPE |
|
60199
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
12 import signal |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
13 import ctypes |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
14 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
15 # Function prototype for the handler function. Returns BOOL, takes a DWORD. |
|
65017
a430f8fec4a0
Merged revisions 85109 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60371
diff
changeset
|
16 HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD) |
|
60199
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
17 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
18 def _ctrl_handler(sig): |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
19 """Handle a sig event and return 0 to terminate the process""" |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
20 if sig == signal.CTRL_C_EVENT: |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
21 pass |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
22 elif sig == signal.CTRL_BREAK_EVENT: |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
23 pass |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
24 else: |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
25 print("UNKNOWN EVENT") |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
26 return 0 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
27 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
28 ctrl_handler = HandlerRoutine(_ctrl_handler) |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
29 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
30 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
31 SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
32 SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL) |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
33 SetConsoleCtrlHandler.restype = wintypes.BOOL |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
34 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
35 if __name__ == "__main__": |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
36 # Add our console control handling function with value 1 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
37 if not SetConsoleCtrlHandler(ctrl_handler, 1): |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
38 print("Unable to add SetConsoleCtrlHandler") |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
39 exit(-1) |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
40 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
41 # Do nothing but wait for the signal |
|
60371
9fd8852ecdd4
Fix a failing test on an apparently slow Windows buildbot.
Brian Curtin <brian.curtin@gmail.com>
parents:
60199
diff
changeset
|
42 while True: |
|
9fd8852ecdd4
Fix a failing test on an apparently slow Windows buildbot.
Brian Curtin <brian.curtin@gmail.com>
parents:
60199
diff
changeset
|
43 pass |
