In message <20020112133241.6F2E71FFB / mail.nmn.jp> kofu / nmn.jp writes: > このようにシェルで実行して得た終了ステータスと > Ruby の fork と exec による子プロセスで実行して得た > 終了ステータスは次のようになっています。 > > sh 0 1 2 > Ruby 0 256 512 > > 256倍というのが引っかかるのですが、どうしてこう > なるのでしょうか。仕様なのか、バグなのか、仕様だと > したらどういう風に使うものなのか、この点を教えて > 頂ければ幸いです。 まるっきり仕様なので全く問題ありません.man waitpid して /usr/include/sys/wait.h かなにかそのあたりを見て,さらに ruby のソース を見たら疑問はなくなるでしょう.大半のシステムでは単に 256 で割れば終 了ステータスを得られます. # 本来そうでないシステムでも合わせてたりする. それで,スクリプトの可搬性を高めるため 1.7.x から(でしたっけ?)$? は Process::Status のインスタンスになり,sys/wait.h で定義されてるマクロ に相当するメソッドを使えるようになってます. # $?.exitstatus は終了ステータスをかえすし $?.signaled? は子プロセスが # シグナルをうけた場合真になる. -- 柳川和久 @ 東大阪市 . 大阪府 January 12, 2002 「....少なくとも 夜の空の方が本物だということはわかったな.昼間の空は書き割だ」 「なによそれ」「へんだぜ」