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]
Thank you ahead of time for help in this matter,
Jacob
unknown wrote:
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.
On Tue, 6 Feb 2007 [email protected] wrote:
Hi, I was having trouble with what seems to be an inconsistency in
ruby exit codes. I can explain this best with examples:
nothing to do with ruby
man 2 wait
…
WEXITSTATUS(status)
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