subprocess returncode is masked

Nobody nobody at nowhere.com
Wed Dec 30 12:59:46 EST 2009


On Mon, 28 Dec 2009 17:12:23 +0100, Emmanuel wrote:

> I'm using Python 2.6 and the new subprocess module to get the exit value 
> of an external executable. It appears the return value given by wait() 
> or poll() operations is masked under Unix: I only get the lower 8 bits. 
> So an exit value of 0x0402 in the C program will be seen as 0x02 in 
> Python. And this does not happen on Windows...
> Any idea why that is ?

That's how Unix works.

The exit status of a process as reported by wait() (etc) is a 16-bit
value (the first Unix systems had a 16-bit "int"). The top 8 bits (8-15)
contain the exit code passed to exit() or "return"ed from main(),
truncated to 8 bits. The bottom 7 bits (0-6) contain the signal number if
the process was terminated by a signal. Bit 7 is set if the process dumped
core.




More information about the Python-list mailing list