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. -- http://mail.python.org/mailman/listinfo/python-list