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: cygwin AT cygwin DOT com Subject: 1.3.12: Process exit code's shifted up 8 bits (cwait, wait, waitp id) Date: Fri, 23 Aug 2002 16:20:16 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" 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. 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/