終了ステータス
Unix系では、waitシステムコールがセットするステータスは子プロセスの終了時の各種情報をまとめたビットフィールドで構成されている。子プロセスが正常終了した場合(WIFEXITEDマクロで判定する。他にはシグナル受信で終了させられる場合がある)、SUSではステータスの下位8ビットが子プロセスが設定した終了ステータスを示すことになっている。その値は wait.h に定義されたマクロ WEXITSTATUS で取得することができる。このため、Unix系の終了ステータスの値は0から255まで(8ビット符号なし整数)に限られている(それ以上の値を指定しても親プロセス側が下位8ビットしか受け取れない)。
慣習的に正常終了時はゼロ、異常終了時はゼロ以外を返すのが一般的である。各種エラーコードの意味について規約を定めようとした例もある。例えばGNUは上位ビットを深刻なエラーを示すために予約することを推奨している。BSDではさらに細かく推奨される解釈を文書化している。
C言語では、main関数(英語版)からの復帰で整数値を返すことで成功か失敗かを通知することができ、そのためのマクロEXIT_SUCCESSとEXIT_FAILUREもある。POSIXではEXIT_SUCCESSは0、EXIT_FAILUREは1とされている。また exit() 関数で整数値や上述のマクロを引数に指定することで終了ステータスを指定することもできる。
EXIT_SUCCESSとEXIT_FAILUREを除けば、Cの標準ではリターンコードの意味を全く定義していない。したがって、リターンコードについての規則はプラットフォームによって異なる。
DOSでは終了ステータスをエラーレベルとも呼ぶ。通常、0から255までの値をとる。バッチファイルで終了ステータスを参照するコマンドとしてERRORLEVELがあり、指定した値以上かどうかで判断するようになっている。