2009-11-08 48 views
20

我不確定subprocess.call()的返回值是什麼意思。subprocess.call()的返回值是什麼?

  • 我可以安全地假設零值意味着命令執行成功嗎?

  • 返回值是否等於shell命令的退出狀態?

例如,以下代碼片段幾乎適用於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!!" 

請賜教:-)

回答

7

它是返回碼的官方文件,但請記住,它是由什麼樣的返回碼是指子的作者。 0意味着成功的強烈文化,但沒有什麼可以強制執行。

4

你處於所調用命令的擺佈之中。 考慮一下:

test.py

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

然後運行代碼(用CMD = 'test.py')將導致 成功!

僅僅是因爲test.py不符合在不成功時返回非零值的慣例。