exit(1)
たとえば、次のようなエラーが表示されたことを理解しています。
if (something went wrong)
exit(EXIT_FAILURE);
しかし、使用する目的は何exit(EXIT_SUCCESS);
ですか?
おそらくプロセスで処理する場合は?例えばfork()
?
ありがとう
これにより、プログラムを呼び出すシステムの一部 (通常はコマンド シェル) が、プログラムが正常に終了したかどうかを確認できます。
編集 - 開始 -
ちなみに、$?
シェル変数を使用して、対話型コマンドの終了コードを照会することもできます。たとえば、この失敗したls
コマンドは value の終了コードを生成します2
。
$ ls -3 ls: invalid option -- '3' Try `ls --help' for more information. $ echo $? 2
編集 - 終了 -
一連のプログラムを呼び出し、各実行の結果に応じて何らかのアクションを選択するバッチ ファイル (またはシェル スクリプト) を想像してみてください。このアクションは、ユーザーへの単純なメッセージ、または他のプログラムまたはプログラムのセットの呼び出しで構成されます。
これは、プログラムがその実行のステータスを返す方法です。
また、ゼロは問題がないことを示し、ゼロ以外の値は問題があることを示します。
多くの場合、プログラムはさまざまな非ゼロ値を使用して、より多くの情報を返します (単なる非正常終了以外)。したがって、ゼロ以外の終了値は、特定の問題を特定できる、より具体的なエラー コードとして機能します。もちろん、これは利用可能なコードの意味に依存します(通常/できればドキュメントに記載されています)
たとえば、ls の man ページには、下部に次のような情報があります。
終了ステータスは、OK の場合は 0、小さな問題の場合は 1、深刻な問題の場合は 2 です。
Unix/Linux の man ページについては、EXIT STATUS というタイトルのセクションを探して、この情報を取得してください。
これはシステムコールです。マニュアルページを確認すると、システムコールに関する優れた情報が常にあります。
http://linux.die.net/man/3/exit
man exit
Linuxボックスでは、ターミナルに入力するだけで、この情報が表示されます。
プログラムを「通常」終了するには、から戻る方法とmain()
、を呼び出す方法の2つの方法がありますexit()
。通常exit()
、障害を通知するために使用され、考えられています。ただし、にいない場合main()
でも、なんらかの方法で終了する必要があります。 exit(0)
通常、にないときにプロセスを終了するために使用されますmain()
。
main()
実際には、オペレーティングシステムにとって特別な機能ではなく、ランタイム環境にとってのみ特別な機能です。実際にロードされる「関数」は通常_start()
、アセンブリで記述されたものとして定義され(これはリンカによって処理され、この回答の範囲を超えています)、環境を準備してを呼び出すだけmain()
です。から戻ると、からの戻り値でmain()
呼び出します。exit()
main()
return を呼び出すことによってのみ、メイン関数からプログラムを終了できます。他の場所からプログラムを終了するには、exit(EXIT_SUCCESS) を呼び出します。たとえば、ユーザーが終了ボタンをクリックしたときなどです。