3

Linux のプログラム終了状態について質問があります。私のプログラムでは、子プロセスを fork し、waitpidそれを取得するために呼び出します。戻ったらwaitpid、子プロセスの終了状態を確認したい。ヘルプを求めてマニュアルを参照すると、 の 2 番目の引数がwaitpid終了状態を保持し、マクロを使用WEXITSTATEしてそれを読み取ることができることがわかりました。ただし、このマクロは実際の終了状態の最下位 8 ビットを抽出するだけですが、 function のマニュアルでは、最下位 8 ビットではなく でexit(int ret_val)終了しret_val & 0x377ます。

私の質問は、他のビットはどこにありますか? 単にそれらをドロップしますか? Linux がこの戦略を採用する理由 この実装は私たちのプログラムに問題をもたらしませんか?

よろしくお願いします。

4

3 に答える 3

6

0x377それが本当に、またはそうあるべきだったことがわかると思います0377

これは 8 進数なので、   377 8   は 8 ビットです。

于 2011-06-03T18:41:07.110 に答える
2

終了の戻り値は、POSIX 仕様に従って 0 から 255 の間であると想定されています。それよりも高い値を返すべきではありません (つまり、POSIX 準拠の OS は、終了の戻り値の下位 8 ビットのみを考慮し、それが親プロセスに渡されるすべてです)。

于 2011-06-03T18:42:50.183 に答える
0

Unix/POSIX は 8 ビットのみをサポートします。10 ビットは (数学的にも論理的にも) 奇数の値になるため、@DigitalRoss に同意する必要があります。

于 2011-06-03T18:43:38.413 に答える