win32.h says
/** Signal stuff* WIN32 doesn't have wait(), so the return value for children* is simply the return value
specifiedby the child, without* any additional information on whether the child terminated* on its own or via a
signal. These macros are also used* to interpret the return value of system().*/
#define WEXITSTATUS(w) (w)
#define WIFEXITED(w) (true)
#define WIFSIGNALED(w) (false)
#define WTERMSIG(w) (0)
I think this supposition has been pretty much proven false by recent
reports of silly "exit code" numbers from Win32 users, as for instance
herehttp://archives.postgresql.org/pgsql-bugs/2006-12/msg00163.php
where the postmaster reports server process exited with exit code -1073741819
from what I suspect is really the equivalent of a SIGSEGV trap,
ie, attempted access to already-deallocated memory. My calculator
says the above is equivalent to hex C0000005, and I say that this
makes it pretty clear that *some* parts of Windows put flag bits into
the process exit code. Anyone want to run down what we should really
be using instead of the above macros?
regards, tom lane