os.system
の戻り値はOSに依存します。
Unixでは、戻り値は2つの異なる情報を含む16ビットの数値です。ドキュメントから:
下位バイトがプロセスを強制終了したシグナル番号で、上位バイトが終了ステータス(シグナル番号がゼロの場合)である16ビットの数値
そのため、信号番号(下位バイト)が0の場合、理論的には結果を8ビット(result >> 8
)シフトしてエラーコードを取得しても安全です。関数 os.WEXITSTATUS
はまさにこれを行います。エラーコードが0の場合、通常、プロセスはエラーなしで終了したことを意味します。
Windowsでは、ドキュメントはos.system
の戻り値がシェル依存であることを指定しています。シェルがcmd.exe
(デフォルト)の場合、値はプロセスの戻りコードです。繰り返しますが、0はエラーがなかったことを意味します。
その他のエラーコードの場合:
os.system('command')
は16ビットの数値を返します。左(lsb)の最初の8ビットはosがコマンドを閉じるために使用する信号について話し、次の8ビットはコマンドの戻りコードについて話します。
00000000 00000000
exit code signal num
例1-コード1でのコマンド出口
os.system('command') #it returns 256
256 in 16 bits - 00000001 00000000
Exit code is 00000001 which means 1
例2-コード3でのコマンド出口
os.system('command') # it returns 768
768 in 16 bits - 00000011 00000000
Exit code is 00000011 which means 3
シグナルで試してみてください-例3-os.system()でコマンドとして使用する長時間スリープするプログラムを作成し、kill -15またはkill -9で殺す
os.system('command') #it returns signal num by which it is killed
15 in bits - 00000000 00001111
Signal num is 00001111 which means 15
python program as command = 'python command.py'を持つことができます
import sys
sys.exit(n) # here n would be exit code
Cまたはc ++プログラムの場合、任意の関数からmain()またはexit(n)からreturnを使用できます#
注-これはUNIXに適用されます
Unixでは、戻り値は、wait()に指定された形式でエンコードされたプロセスの終了ステータスです。 POSIXはCのsystem()関数の戻り値の意味を指定しないため、Python関数の戻り値はシステムに依存します。
os.wait()
子プロセスの完了を待って、そのpidと終了ステータスの指示を含むTupleを返します。16ビット数。その下位バイトはプロセスを強制終了したシグナル番号で、上位バイトは終了ステータスです(シグナル数はゼロです);コアファイルが生成された場合、下位バイトの上位ビットが設定されます。
Availability: Unix
。
「Unixでは、戻り値はwait()に指定された形式でエンコードされたプロセスの終了ステータスです。POSIXはC system()関数の戻り値の意味を指定しないことに注意してください。 Python関数はシステムに依存します。 "
http://docs.python.org/library/os.html#os.system
エラーがないため、終了コードはゼロです
os.system()は、コマンド出力ではなく、UNIX出力を返します。したがって、エラーがない場合、終了コードは0として書き込まれます。
使いたいかもしれません
return_value = os.popen('ls').read()
代わりに。 os.system
はエラー値のみを返します。