これは、終了コードに関するいくつかの規則にすぎません。いくつかのマニュアルの内容を見てみましょう:
GNU C ライブラリ リファレンス マニュアル
特定のプログラムが返すステータス値の種類には規則があります。最も一般的な規則は、成功の場合は 0、失敗の場合は 1 です。
一般的な規則では、特別な目的のために 128 以上のステータス値が予約されています
- 一部の非 POSIX システムでは、終了ステータス値に異なる規則を使用しています
- 移植性を高めるために、マクロEXIT_SUCCESSおよびEXIT_FAILURE
を使用して、成功と失敗の従来のステータス値を指定できます。
ISO/IEC 9899:2011 (C11 規格)
status の値が0またはEXIT_SUCCESSの場合、正常終了ステータスの実装定義形式が返されます。status の値がEXIT_FAILUREの場合、失敗した終了ステータスの実装定義形式が返されます。それ以外の場合、返されるステータスは実装定義です。
つまり、必要に応じて (ほとんどの場合はそれで十分です)、成功または失敗を示すだけであれば、必ずEXIT_SUCCESSおよびEXIT_FAILUREを使用する必要があります。他のエラーを示したい場合は、独自の終了ステータスを再作成する必要があります。例えば:
#define HEX_FILE_CREATE 2
#define HEX_FILE_CREATE 3
...
何をどのように返品する必要があるかについて、追加のヒントがあります。
- 警告:エラー数を終了ステータスとして使用しないでください。これは実際にはあまり役に立ちません。親プロセスは通常、発生したエラーの数を気にしません。さらに悪いことに、ステータス値が 8 ビットに切り捨てられるため、機能しません。したがって、プログラムが 256 個のエラーを報告しようとした場合、親は 0 個のエラー、つまり成功のレポートを受け取ります。
- 同じ理由で、errno の値を終了ステータスとして使用することはできません。これらは 255 を超える可能性があります。
結論:
- 成功するには、常にEXIT_SUCCESSを使用します
- 失敗の終了ステータスは 1 から 127 の間でなければなりません
- errnoエラー コードを終了ステータスとして使用しないでください