Hi, I was having trouble with what seems to be an inconsistency in
ruby exit codes. I can explain this best with examples:
On Windows XP, the command:
ruby -e 'exit(32512)' || echo hi
yeilds output (as it seems it should):
hi
whereas on Mac OS X Darwin, the same command does not output anything
(where I expect it to output "hi"). Ruby on OS X behaves as I would
expect if other exit codes are used.
"ruby -v" for the windows computer: ruby 1.8.4 (2006-04-14) [i386-
mswin32]
"ruby -v" for the mac computer: ruby 1.8.2 (2004-12-25) [universal-
darwin8.0]
evaluates to the least significant eight bits of the return code of the child
which terminated, which may have been set as the argument to a call to
exit() or _exit() or as the argument for a return statement in the main
program. This macro can only be evaluated if WIFEXITED returned true.
...
the exit staus in unix is stored in only the first byte of the exit status
word. and
32512 => 11111110 0000000
^
exit status
this is one of the beautiful things about windows being non-posix.
-a
···
On Tue, 6 Feb 2007 jacob@asperasoft.com wrote:
Hi, I was having trouble with what seems to be an inconsistency in
ruby exit codes. I can explain this best with examples:
--
we can deny everything, except that we have the possibility of being better.
simply reflect on that.
- the dalai lama
Hi, I was having trouble with what seems to be an inconsistency in
ruby exit codes. I can explain this best with examples:
On Windows XP, the command:
ruby -e 'exit(32512)' || echo hi
yeilds output (as it seems it should):
hi
whereas on Mac OS X Darwin, the same command does not output anything
(where I expect it to output "hi"). Ruby on OS X behaves as I would
expect if other exit codes are used.
Not sure about Windows, but a quick glance through Stevens' _Advanced
Programming in the UNIX Environment_ reinforces my off-the-cuff
recollection that POSIX doesn't specify more than allowing an 8-bit exit
status code to make it through. See the wait(2) manual page for the
documentation for the WEXITSTATUS(status) macro, which on both OS X and
Linux specifically mention 8-bits.