これは実装固有です。これを行うことができます:
int main()
{
assert(0);
}
次に実行します:
./a.out
echo $?
<ブロック引用> 1 (<- または何でも)
これにより、少なくともセットアップに何を期待するかがわかります。 134 を取得しています GCC と g++ の両方を備えた 2 つの Linux ボックスで。
C99 (C11 では変更なし) 標準では、assert
と規定されています。 abort
を呼び出します そして abort
スタッフは、リターン コードについて次のように述べています。
関数呼び出し raise(SIGABRT)
によって、処理系定義のステータスの不成功終了の形式がホスト環境に返されます。 .
こちらの C99 標準のセクション 7.2.1.1 (アサート) および 7.20.4.1 (アボート) に記載されています。
多くの UNIX システムは、128 とシグナル番号 (SIGABRT
) を返します。 はシグナル番号 6) であるため、134 を取得する可能性があります。取得した内容が何であれ、C 実装によって文書化する必要があります。
たとえば、gcc
についてはこちらを参照してください .呼び出し元の環境に何が返されるかについてはまったく沈黙していますが。ここの特定のセクションから:
一部の選択は、ライブラリとオペレーティング システム (または独立した環境用にコンパイルする場合は他の環境) によって行われます。詳細については、ドキュメントを参照してください。
そしてこちら:
<ブロック引用>これらのポイントのほとんどの動作は、C ライブラリの実装に依存しており、GCC 自体によって定義されていません。
glibc
もそうです プログラムの終了時に doco here (具体的には終了ステータス ビット)。慣習について言及していますが、確固たる規則はありません。