0

システムがメインからの障害インジケータをどのように処理するかを確認する簡単なケースを作成します。しかし、何も起こりませんでした。return 0 と return -1 の違いを本当に知りたいです。

int main()
{
    return -1;
}
4

5 に答える 5

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.out2 番目と 3 番目のケースでは、それぞれ が成功した場合と失敗した場合にのみエコーが発生します。ここで、成功は main から 0 を返すこととして定義されます。これは、次の構文を使用するとより明確になる規則です。

if ./a.out; then
  echo a.out returned zero from main
else
  echo a.out returned non-zero from main
fi
于 2013-09-30T04:31:02.513 に答える
1

ほとんどの場合、main の戻り値は役に立ちません。伝統的に、特に Windows では、プログラムが成功したことを示すために 0 を返します。しかし Linux では、多くの場合、一連のプログラムが存在します。これは、2 番目のプログラムの状態が最初のプログラムの結果に依存することを意味します。そのとき、戻り値にはその位置があります。

したがって、戻り値が何であれ、ほとんどの場合は設計に依存し、システムには何の意味もありません。

それがあなたを助けることを願っています。

于 2013-09-30T03:00:24.660 に答える
0

bash シェル (または同様のもの) を使用している場合は、最後に実行されたコマンドの戻り値をecho $?. bash ターミナル セッションの例:

$false
$echo $?
1
$true
$echo $?
0
$

他のシステムでは、戻り値へのアクセス方法が異なります。DOS または Windows では、戻り値は ERRORLEVEL コマンドまたは %ERRORLEVEL% 変数で確認できます。

于 2013-09-30T05:45:10.637 に答える
0

の戻り値main()が利用可能です:

  1. 使用しているシェルに応じて、シェルがそれを開始した場合$statusなどにシェルに。

  2. status引数が指す変数を介して、それを開始したプログラムにwait()man 2 wait()を参照してください。

GNU はまったく関係ありません。

于 2013-09-30T03:42:15.573 に答える