On 13/11/2012 20:54, Stefan Scherfke wrote:
> Hi Tim,
> 
> Am 13.11.2012 um 21:44 schrieb Tim Golden <m...@timgolden.me.uk>:
> 
>> On 12/11/2012 13:12, Stefan Scherfke wrote:
>>> Hi all,
>>>
>>> recently I’ve been playing around with sending and catching signals on
>>> Windows. I finally found out how to send and catch a BREAK event.
>>>
>>> With Python 2.7(.2), I only need os.kill(pid, signal.CTRL_C_EVENT) and
>>> signal.signal(signal.SIGBREAK, handler). Alternatively, I can use
>>> GenerateConsoleCtrlEvent and SetConsoleCtrlHandler via ctypes.
>>>
>>> However, the former does not work with Python 3.3 (64bit) and the latter
>>> always raises a KeyError in Python’s threading module.
>>>
>>> My question is: Should signal.signal(signal.SIGBREAK, handler) work
>>> under Python 3.3? If so, what am I doing wrong? Why raises the
>>> ctypes-variant an error while the signal-variant doesn’t?

And just a little more data. I've run a slightly modified version of
your code on a Win7 box with the same results. Slightly modified because
I realised that your subprocess.call was calling "python" which would be
running 2.7 on my box. I modified it to call sys.executable and added a
print(sys.version) at the top of the parent & child. I also added a line
to indicate that the child had finished sleeping rather than having been
signalled.

It worked as expected for 2.7, 3.2, 3.3 & 3.4

3.3 & 3.4 were slightly slower to respond. That might be due to a change
to the interpreter loop to avoid a (slightly obscure) race condition
when Ctrl-C was pressed.

TJG
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to