On Dec 30, 7:59 pm, Nobody <nob...@nowhere.com> wrote: > 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.
See also: http://docs.python.org/library/os.html#os.wait -- http://mail.python.org/mailman/listinfo/python-list