'ruby' exit code 32512

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.

:wink:

-a