1

exit()関数によって返される番号であるプログラムの終了ステータスを取得する必要がある状況になりました。

LINUXでは、$?コマンドを使用してステータスを取得しました。Windowsでも機能するこのステータスを取得する他の方法はありますか?

私が気付いたもう1つのことは、exit()関数に負の数を渡すと、IDEがクラッシュ$?し、この場合もコマンドがステータスを表示できないことです。関数をチェックexit()したところ、その参照には整数を渡すことができると書かれています。

4

1 に答える 1

3

プログラムの戻り値は、オペレーティングシステムごとに異なる意味を持ちます。Unix-yシステムでは、値0〜255のみが有効です(1つの符号なしバイト)。これは負の値が許可されていないことを意味し、IDEの問題の原因である可能性があることに注意してください。FreeBSDはに特定の意味をたくさん導入しましたsysexits.h。これは私が使用したLinuxディストリビューションには確かに存在しますが、実際に広く受け入れられているのは0成功と0失敗以外の唯一のものです。Pete Becker指摘されているように、EXIT_SUCCESSEXIT_FAILURE標準で定義されたマクロです(それぞれ01Unix-yプラットフォームでは、実装が定義されています)。

Windowsでは、32ビットの符号付き整数を取得します(負の値は許可されますが、意味があるかどうかはわかりません)。繰り返し0ますが、成功であり、他の値はさまざまなことを意味します。のように、コンソールで最後のプログラムの終了コードを確認するためにecho $?使用できます。echo %errorlevel%

N3337また、私の(C ++ 11標準に非常に近いドラフト)は次のように言っていることに注意してくださいsection 3.6.1 paragraph 5

mainステートメントに遭遇せずに制御が終了した場合return 、その効果は実行の効果です。return 0;

于 2012-09-20T12:40:58.620 に答える