2009-11-08 11 views
20

戻り値がsubprocess.call()であることがわかりません。subprocess.call()の戻り値は何ですか?

  • ゼロの値が常にコマンドが正常に実行されたことを意味すると思いますか?

  • 戻り値はシェルコマンドのexit stausに相当しますか?

たとえば、次のコードはLinux上のほとんどのコマンドに対応しますか?

cmd = "foo.txt > bar.txt" 
ret = subprocess.call(cmd, shell=True) 
if ret != 0: 
    if ret < 0: 
     print "Killed by signal", -ret 
    else: 
     print "Command failed with return code", ret 
else: 
    print "SUCCESS!!" 

はい、Subprocess.call戻っ "実際のプロセスの戻りコード"

答えて

7

の公式ドキュメントをチェックし、それはリターンコードが何を意味するか、サブプロセスの作者次第です心に留めておくことができます。成功の意味は0の強い文化がありますが、それを強制するものはありません。

4

あなたはあなたが呼んでいるコマンドを慈悲に持っています。 これを考えてみましょう:

test.py

#!/usr/bin/env python 
success=False 
if not success: 
    exit() 

その後(CMD = 'test.py' が)あなたのコードを実行している SUCCESSになります!

単にtest.pyが成功しなかった場合にゼロ以外の値を返すという規約に準拠していないためです。

関連する問題