On 03/31/2016 07:30 AM, Björn Stabel wrote: > Am 31.03.2016 um 15:01 schrieb Cristian: >> I noted that exit codes returned by CMD and other apps (msiexec) are >> truncated to 1 byte (0 .. 255).
This matches Linux, but not POSIX. >> Windows exit codes are represented using 32 bits, so is this limitation >> intentional? Part intentional (we do what Linux does), and part accidental (Cygwin handles the return status slightly different than Windows, and that handling makes it impossible to easily preserve all 32-bits, even if Linux were to be patched to obey POSIX). > POSIX specifies that the lower 8 bits of the exit status be made > available to the caller of wait/waitpid: > http://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html Correct: wait() and waitpid() can only return 8 bits; but POSIX states that waitid() MUST be able to access all 32-bits untruncated; this is where Linux gets it wrong (Linux truncates during exit(), so waitid() can only return 8 bits; other operating systems do NOT truncate during exit, but preserve all 32 bits; if you use wait() or waitpid() you only get 8 bits, but if you use waitid() you can see the full 32 bits). > Maybe there's another way to get the entire status value, but this looks > like a POSIX limitation to me. > Cygwin is conformant here. Cygwin is only partially conformant here. See also: http://austingroupbugs.net/view.php?id=947 -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature