Mail Archives: cygwin/2002/08/23/02:20:23
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 <stdio.h>
#include <process.h>
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 <Steven DOT Reddie AT ca DOT com>
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/
- Raw text -