win32.h says /* * Signal stuff * WIN32 doesn't have wait(), so the return value for children * is simply the return value specified by 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 here http://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 ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq