On Jun 20, 2009, at 10:21 PM, greg wrote:
Philip Semanchuk wrote:

Best of all, PyErr_CheckSignals() doesn't interfere with a Python- level signal handler if one is set.
Ah, I hadn't realised that you were doing this in C
code, and I was trying to think of a Python-level
solution.

For C code, the solution you give sounds like a
good one.

My only misgiving is that the user might expect to
get a KeyboardInterrupt in response to Ctrl-C, so
it might be better to just let it propagate instead
of turning it into a different exception.
I completely agree. The simple solution (for me) is to handle all  
return codes of EINTR the same way which is to raise posix_ipc.Error  
with the message "The wait was interrupted by a signal". But that  
loses information. KeyboardInterrupt is very specific while  
posix_ipc.Error is generic and even parsing the message doesn't tell  
much more.
When my C code sees EINTR, I will probably raise KeyboardError when I  
see that and add a specific posix_ipc.SignalError to raise in other  
EINTR circumstances.

Thanks,
Philip
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to