subprocess.Popen
オブジェクトには、アクセスreturncode
できる属性があります。
http://docs.python.org/2/library/subprocess.html#subprocess.Popen.returncode
check_call
便利な関数を使用して調べることもできます。
http://docs.python.org/2/library/subprocess.html#subprocess.check_call
戻りコードがゼロの場合にのみ戻ります。それ以外の場合は、 (そこから属性CalledProcessError
を読み取ることができます) が発生します。returncode
あなたの例では、stdout と stderr は、ログ ファイルではなく、呼び出し元の Python スクリプトを指しています。
>>> import subprocess
>>> argpass = ['echo']
>>> argpass.append('hello world')
>>> # I reroute to PIPE because I don't have a logfile
>>> log_output_err = subprocess.PIPE
>>> out = subprocess.Popen(argpass,
stdout = log_output_err,
stderr = log_output_err)
>>> output,error = out.communicate()
>>> print output
hello world
>>> # Check if child process has terminated.
>>> # If it has finished, will return returncode attribute.
>>> # Otherwise, it returns None
>>> out.poll()
0
>>> # Or we can read the returncode attribute directly:
>>> out.returncode # Direct
0
>>>
プロセスが完了するまでに時間がかかる場合returncode
は、確認に行ったときに値が設定されていない可能性があります。の値がreturncode
isの場合、None
子プロセスがまだ終了していないことを意味します。.wait()
子プロセスがメソッドで終了するまで、スクリプトの実行を停止できます。