web-dev-qa-db-ja.com

Pythonでのexit(0)とexit(1)の違い

Pythonのexit(0)exit(1)の違いは何ですか?

私は見回してみましたが、これらの行に特定の質問を見つけることができませんでした。すでに回答済みの場合は、リンクで十分です。

131
seeker

0と1は終了コードです。

exit(0)は、エラーや問題のない、きれいな終了を意味します。

exit(1)は何らかの問題/エラー/問題があったことを意味し、それがプログラムが終了している理由です。

これはPython特有のものではなく、かなり一般的です。ゼロ以外の終了コードは異常終了として扱われ、ときどきエラーコードが問題の内容を示します。エラーコード0は、正常終了を意味します。

これは、他のプログラム、シェル、呼び出し元などがあなたのプログラムで何が起こったのかを知り、それに従って進行するのに役立ちます。

200
manojlds

これは、プログラムの実行が終了したときのプログラムの 終了ステータス を決定します(通常、成功の場合は0、エラーの場合は1)。

これはPythonに固有のものではありません。正確な効果はオペレーティングシステムやプログラムの呼び出し方法によって異なります(ただし、Pythonスクリプトを実行しているのであれば99%の時間がかかりますが、問題ありません)。

17
David Robinson

Pythonを含むすべてのCプログラムの標準的な規則は、exit(0)が成功を示し、exit(1)またはその他のゼロ以外の値(1..255の範囲)が失敗を示すことです。 0..255の範囲外の値は、モジュロ256として処理されます(終了状況は8ビット値で保管されます)。時々、それは署名されたものとして扱われるでしょう(それであなたは-128、-127などを見るかもしれません)が、より一般的には符号なしとして扱われます。

このステータスはPythonを起動したコードで利用可能です。この規則はプラットフォーム間で適用されますが、ゼロ以外の終了状況の意味はプラットフォームによって異なります。

8

あなたがexit()関数に渡す数は単にあなたのプログラムの戻りコードで、それはオペレーティングシステムに与えられます。プログラムの観点からは違いはありません。どちらの場合も実行は終了し、関数に提供された値はOSに渡されます。しかし、いくつかのツールやスクリプトはプログラムの終了コードを考慮に入れています。ほとんどのツールは成功すると0を返し、エラーを示すにはゼロ以外の値を返します。

そのため、プログラムがスクリプト、自動化ツール、または戻りコードを考慮に入れた他のソフトウェア(IDEなど)から実行される場合は、何を返すかに注意する必要があります。

疑問がある場合は、0を返してすべてが問題ないことを示してください。

exit(0):これにより、プログラムは正常に終了して終了します。

exit(1):これはプログラムをシステム特有の意味で終了させます。

多くのシステムで、exit(1)はある種の失敗を知らせますが、保証はありません。

思い出したように、C標準は3つの標準終了値しか認識していません。

  • EXIT_SUCCESS - 正常終了
  • EXIT_FAILURE - 失敗した終了
  • 0 - EXIT_SUCCESSと同じ