[Twisted-Python] [newb] another process question

Tim Allen screwtape at froup.com
Fri Nov 5 21:19:05 EDT 2010


On Fri, Nov 05, 2010 at 07:28:24PM -0400, Neal Becker wrote:
> The status 
> is passed in the form of a Failure instance, created with a .value that 
> either holds a ProcessDone object if the process terminated normally (it 
> died of natural causes instead of receiving a signal, and if the exit code 
> was 0), or a ProcessTerminated object (with an .exitCode attribute) if 
> something went wrong.

The deal is, there are multiple kinds of 'went wrong' in the Unix
process model. One kind (described the documentation you quote above) is
a non-zero exit code; you can test this by running "/bin/false" rather
than "sleep 15" as your test command. Another kind is 'killed by
a signal', in which case the value "returned" by the process encodes the
number of the signal that killed it, rather than a process-defined error
code.

Looking at the source of the ProcessTerminated class mentioned:

    http://twistedmatrix.com/trac/browser/trunk/twisted/internet/error.py#L268

...it looks like killing a process with a signal puts 'None' in the
.exitCode property, and the signal number in the .signal property. The
instance also has a useful str() representation if you just want to log
a sensible error message.



More information about the Twisted-Python mailing list