Mercurial > cpython-lru_cache-weakref
annotate Lib/test/win_console_handler.py @ 80661:94de77bd0b4b 2.7
Issue #16194: document imp.load_dynamic problems
when read several extension modules from the same binary object file.
| author | Andrew Svetlov <andrew.svetlov@gmail.com> |
|---|---|
| date | Thu, 29 Nov 2012 19:51:28 +0200 |
| parents | acdb32005c0a |
| children |
| 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 |
|
65176
acdb32005c0a
Merged revisions 85315 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
65017
diff
changeset
|
14 import mmap |
|
acdb32005c0a
Merged revisions 85315 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
65017
diff
changeset
|
15 import sys |
|
60199
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
16 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
17 # 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
|
18 HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD) |
|
60199
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
19 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
20 def _ctrl_handler(sig): |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
21 """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
|
22 if sig == signal.CTRL_C_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 elif sig == signal.CTRL_BREAK_EVENT: |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
25 pass |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
26 else: |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
27 print("UNKNOWN EVENT") |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
28 return 0 |
|
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 ctrl_handler = HandlerRoutine(_ctrl_handler) |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
31 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
32 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
33 SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
34 SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL) |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
35 SetConsoleCtrlHandler.restype = wintypes.BOOL |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
36 |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
37 if __name__ == "__main__": |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
38 # 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
|
39 if not SetConsoleCtrlHandler(ctrl_handler, 1): |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
40 print("Unable to add SetConsoleCtrlHandler") |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
41 exit(-1) |
|
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
42 |
|
65176
acdb32005c0a
Merged revisions 85315 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
65017
diff
changeset
|
43 # Awaken mail process |
|
acdb32005c0a
Merged revisions 85315 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
65017
diff
changeset
|
44 m = mmap.mmap(-1, 1, sys.argv[1]) |
|
acdb32005c0a
Merged revisions 85315 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
65017
diff
changeset
|
45 m[0] = '1' |
|
acdb32005c0a
Merged revisions 85315 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents:
65017
diff
changeset
|
46 |
|
60199
d4799ee64c23
set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents:
60197
diff
changeset
|
47 # 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
|
48 while True: |
|
9fd8852ecdd4
Fix a failing test on an apparently slow Windows buildbot.
Brian Curtin <brian.curtin@gmail.com>
parents:
60199
diff
changeset
|
49 pass |
