システムがメインからの障害インジケータをどのように処理するかを確認する簡単なケースを作成します。しかし、何も起こりませんでした。return 0 と return -1 の違いを本当に知りたいです。
int main()
{
return -1;
}
a.out という名前の実行可能ファイルをコンパイルしたと仮定して、次のことを考慮してください。
$ ./a.out # ignore the value returned from main
$ ./a.out && echo success # check the value returned from main
$ ./a.out || echo failure
a.out
2 番目と 3 番目のケースでは、それぞれ が成功した場合と失敗した場合にのみエコーが発生します。ここで、成功は main から 0 を返すこととして定義されます。これは、次の構文を使用するとより明確になる規則です。
if ./a.out; then
echo a.out returned zero from main
else
echo a.out returned non-zero from main
fi
ほとんどの場合、main の戻り値は役に立ちません。伝統的に、特に Windows では、プログラムが成功したことを示すために 0 を返します。しかし Linux では、多くの場合、一連のプログラムが存在します。これは、2 番目のプログラムの状態が最初のプログラムの結果に依存することを意味します。そのとき、戻り値にはその位置があります。
したがって、戻り値が何であれ、ほとんどの場合は設計に依存し、システムには何の意味もありません。
それがあなたを助けることを願っています。
bash シェル (または同様のもの) を使用している場合は、最後に実行されたコマンドの戻り値をecho $?
. bash ターミナル セッションの例:
$false
$echo $?
1
$true
$echo $?
0
$
他のシステムでは、戻り値へのアクセス方法が異なります。DOS または Windows では、戻り値は ERRORLEVEL コマンドまたは %ERRORLEVEL% 変数で確認できます。
の戻り値main()
が利用可能です:
使用しているシェルに応じて、シェルがそれを開始した場合$status
などにシェルに。
status
引数が指す変数を介して、それを開始したプログラムにwait()
。man 2 wait()を参照してください。
GNU はまったく関係ありません。