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