Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: From: "Reddie, Steven" To: Don Sharp Cc: gnuwin32 Subject: RE: 1.3.12: Process exit code's shifted up 8 bits (cwait, wait, w aitpid) Date: Mon, 26 Aug 2002 10:27:47 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" What was I thinking, comparing the behaviour against Microsoft's :-) Thanks. -----Original Message----- From: Don Sharp [mailto:dwsharp AT iee DOT org] Sent: Friday, 23 August 2002 6:19 PM To: Reddie, Steven Cc: gnuwin32 Subject: Re: 1.3.12: Process exit code's shifted up 8 bits (cwait, wait, waitpid) "Reddie, Steven" wrote: > > There appears to be a bug in cwait and I think in other functions (wait, > waitpid) in that the exit code of the child process is shifted up 8 bits. This is the way it happens in Unix! If you can do a man waitpid on any recent Unix system and it will tell you to use the supplied macros to evaluate the status returned. (Funnily enough just yesterday we had some code that had to be changed to evaluate the status code with the WIFEXITED and WEXITSTATUS macros). See /usr/include/sys/wait.h HTH Don Sharp > Some sample code: > > #include > #include > > void main() > { > char* args[] = { "cl", "/c", "foo.c", NULL }; > > int pid = spawnvp(_P_NOWAIT, args[0], args); > if (pid != -1) > { > int result = 0; > cwait(&result, pid, WAIT_CHILD); > printf("result = %d\n", result); > } > } > > Output from Cygwin gcc compile (gcc -ox.exe x.c): > result = 512 > Output from MSVC compile (cl x.c): > result = 2 > > The reason I say that I think it is also in wait or waitpid is that I saw > something similar when I was playing around with fork but I don't recall the > details. > > Can someone please let me know if this isn't expected behaviour. If it is a > bug I need to work around it in such a way that when it gets fixed my code > doesn't break. I guess I could shift the value down 8 bits only if is is > greater than 255. Does that sound like the best approach? > > Steven > -- > Steven Reddie > Senior Software Engineer > Computer Associates Pty Ltd (Australia) > > -- > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > Bug reporting: http://cygwin.com/bugs.html > Documentation: http://cygwin.com/docs.html > FAQ: http://cygwin.com/faq/ -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/