waste of resources ?

Hrvoje Niksic hniksic at srce.hr
Mon Jun 7 16:38:08 EDT 1999


Bryan VanDeVen <bryanv at arlut.utexas.edu> writes:

> On sysV or Unix98 systems you may set the disposition of SIGCHLD to
> SIG_IGN (i.e., ignore death or a child signals) The watertight
> method is to catch SIGCHLD and have the handler call waitpid(...) 
> with WNOHANG in a loop.

Except that when a signal arrives during an IO operation, it will be
canceled due to the EINTR brain-damage, and Python will throw an
exception.  So if you expect your program to accept SIGCHLD signals at
random intervals, you'd better encase all your IO operation in a loop
like this:

while 1:
    try:
        read(...)             # or whatever
    except (IOError, os.error), detail:
        if detail.args[0] == errno.EINTR:
            continue
        else:
            raise

This problem with signals has been my long-standing gripe with Python.




More information about the Python-list mailing list