Ralf Schmitt added the comment:

PyOS_setsig in pythonrun.c now calls siginterrupt(sig, 1) (in Python
2.4.4/Python 2.5.1, but not in Python 2.3). So you should be able to
timeout the system calls with a signal.alarm call.

However, having siginterrupt available would still be useful.
I have some patches for the signal module and will clean them up in some
days and attach to this bug.

Here's an implementation using ctypes:

def siginterrupt(signum, flag):
    """change restart behavior when a function is interrupted by the 
    specified signal. see man siginterrupt.
    """
    import ctypes
    import sys
    
    if flag:
        flag = 1
    else:
        flag = 0
        
    if sys.platform=='darwin':
        libc = ctypes.CDLL("libc.dylib")
    elif sys.platform=='linux2':
        libc = ctypes.CDLL("libc.so.6")
    else:
        libc = ctypes.CDLL("libc.so")

    if libc.siginterrupt(signum, flag)!=0:
        raise OSError("siginterrupt failed")

----------
nosy: +schmir

_____________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1089358>
_____________________________________
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to