WEXITSTATUS(status)
の仕組みを理解しようとしています。 WEXITSTATUS(status)
の戻り値が変数に追加されているコードを見つけました。
以下がスニペットです。
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
WEXITSTATUS
の戻り値はどのように計算できますか?
WEXITSTATUS(stat_val)
はマクロです(したがって、実際には「return」ではなく、何かに「評価」します)。
どのように機能するかについては、使用するCコンパイラに付属するヘッダー( _#include
_ を介して_<sys/wait.h>
_ dである必要があります)で検索することをお勧めします。
このマルコの実装は、Cコンパイラごとに異なる場合があります。
マクロWIFEXITED(stat_val)
が_0
_と等しくない値を与えた場合、このマクロは正しい値のみを与えることに注意してください。
waitpid()
のPOSIX仕様 からの逐語:
WEXITSTATUS(stat_val)
WIFEXITED(stat_val)の値がゼロ以外の場合、このマクロは、子プロセスが渡したステータス引数の下位8ビットに評価されますto_ exit()またはexit()、または子の値main()から返されたプロセス。
特定のプログラムの戻りコードを追加する背後にある動機は、コードの作者と、できれば既存のドキュメントだけが知っています。