というメッセージを受け取りましたscript xyz.py returned exit code 0
。これは何を意味するのでしょうか?
Python の終了コードは何を意味しますか? いくつありますか?どれが重要ですか?
sys.exit()
スクリプトでの呼び出しを探しています。そのメソッドへの引数は、終了コードとして環境に返されます。
スクリプトがexitメソッドを呼び出しておらず、0 がデフォルトの終了コードである可能性はかなり高いです。
のドキュメントからsys.exit
:
オプションの引数argは、終了ステータス(デフォルトはゼロ)を与える整数、または別のタイプのオブジェクトにすることができます。整数の場合、ゼロは「正常終了」と見なされ、ゼロ以外の値はシェルなどによって「異常終了」と見なされます。ほとんどのシステムでは、0〜127の範囲である必要があり、そうでない場合は未定義の結果が生成されます。一部のシステムには、特定の終了コードに特定の意味を割り当てるための規則がありますが、これらは一般に未開発です。Unixプログラムは通常、コマンドライン構文エラーに2を使用し、他のすべての種類のエラーに1を使用します。
終了コードが使用される1つの例は、シェルスクリプトです。Bashでは、特別な変数$?
で最後の終了ステータスを確認できます。
me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43
個人的には(Linuxシステムで)見つけた終了コードを使用しようとしています/usr/include/asm-generic/errno.h
が、これが正しいことかどうかはわかりません。
errno
標準の終了コードを定義するモジュールがあります。
たとえば、Permission deniedはエラー コード13です。
import errno, sys
if can_access_resource():
do_something()
else:
sys.exit(errno.EACCES)
0 の終了コードは通常、「ここでは何も問題がない」ことを意味します。ただし、スクリプトのプログラマーが規則に従わなかった場合は、ソースを参照してその意味を確認する必要があります。通常、ゼロ以外の値がエラー コードとして返されます。
オペレーティングシステムのコマンドには終了コードがあります。Linuxの終了コードを探して、これに関するいくつかの資料を確認してください。シェルは終了コードを使用して、プログラムが機能したか、問題があったか、失敗したかを判断します。標準の(または少なくとも一般的に使用される)終了コードを作成するためのいくつかの取り組みがあります。この高度なシェルスクリプトの投稿を参照してください。
終了コードは、スクリプト作成者によって割り当てられた意味のみを持ちます。Unix の伝統では、終了コード 0 は「成功」を意味し、それ以外はすべて失敗です。特定のスクリプトの終了コードの意味を確認する唯一の方法は、スクリプト自体を調べることです。
多くのプログラミング言語の終了コードは、プログラマ次第です。そのため、プログラムのソース コード (またはマニュアル) を確認する必要があります。ゼロは通常、「すべてがうまくいった」という意味です。
例外ハンドラなどを実行できるようにするには、プロセスを突然終了させるのexit(0)
ではなく、ビルトインを使用してクリーン シャットダウンすることをお勧めします。sys.exit()