終了ステータスコード

定義

プログラムがどのように終了したかを示すコード。
C プログラムの main 関数が return で戻す整数値。

main の戻り型は int のため「符号つき」におもえるけれど、 POSIX で定められている有効な値の範囲は 0 から 255 までの整数(符号なし)。
値の使いかたには「これ!」という決定的な文書は存在しない?(ご存じのかた、いらっしゃったら教えてください)

意味

プログラム終了コード:0, 1, 2

Stack overflow の「Are there any standard exit status codes in Linux?」についた回答 40484670 によれば値の意味は以下のとおり:

* Exit status 0: success
* Exit status 1: "failure", as defined by the program
* Exit status 2: command line usage error

Are there any standard exit status codes in Linux? #40484670

正常終了なら return 0、
あらゆる失敗(定義はプログラム次第)は return 1、
呼びだし引数が間違っていたなら return 2、
以上。

シグナル番号

128 以上のステータスコードはシグナル番号としてつかわれる。
シェルが、 N をシグナル番号としてプログラムが捕捉しなかったシグナルを 128 + N のステータスコードとして返す。

たとえば Ctrl+C で割り込みをかけた場合(で割り込みハンドラーを設定していなければ) 130 が終了ステータスコードになる。

補足

return -1 ⇒ 255, in Debian/Linux

Windows WSL (Linux Subsystem)の Debian (Linux JPC20630274 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 GNU/Linux)で return -1 する main を書いて試したところ、シェルによるステータスコード表示は 255 となった。

$ gcc -x c - <<EOF && ./a.out; echo $?
int main() { return -1; }
EOF
255


この記事が気に入ったらサポートをしてみませんか?