はるおです。

詳細な解説、ありがとうございます。

On Thu, 16 Nov 2000 17:25:39 +0900
Takahiro Kambe <taca / sky.yamashina.kyoto.jp> wrote:
|4BSD系の場合の*実装*だと、waitの戻り値statusには、
|
|1. status & 0x7f が 0 の場合
|
|	- (status >> 8) & 0xff にexit(x)のxが入る。
|
|2. status & 0x7f が 0x7f の場合
|
|	- 子プロセスは停止
|	- (status >> 8) & 0xff に停止の原因となったシグナルの番号
|
|3. status & 0x7f が1.や2.以外
|
|	- 子プロセスはシグナルを受けて終了した。
|	- (status >> 8) & 0xff に停止の原因となったシグナルの番号
|	- status & 0x80 がゼロでなければcore dump
|
|(intの下位16ビットだけ使ってるのね。)
|
|あとは2.や3.をperlやrubyの側で、どの様に$?に反映させているかでしょう。
|2.あたりはプロセスの終了ではないので無視しているかもしれません。

上記の3ケースが正しいことを前提とすると、親プロセスが参照する、
それぞれ$?には具体的にどのような値がセットされるのでしょうか?
現状のRubyの実装では、1.のケースの$?にはx*256がセットされるこ
とになるのでしょうね。
$?にxをセットすると3ケース間で値が重複するのでしょうか?
それだとまずいですが・・・
---
Haruo