subprocess.call()的返回值是多少?

时间:2009-11-08 16:10:19

标签: python linux

我不确定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!!"

请赐教: - )

3 个答案:

答案 0 :(得分:28)

是的,Subprocess.call返回“实际流程返回代码”。

您可以查看Subprocess.callSubprocess.Popen.returncode

的官方文档

答案 1 :(得分:9)

这是返回代码,但请记住,这取决于子进程的作者返回代码的含义。有一种强烈的0文化意味着成功,但没有什么可以强制执行的。

答案 2 :(得分:5)

您将受到所调用命令的支配。 考虑一下:

test.py

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

然后运行代码(使用cmd ='test.py')将导致 SUCCESS !!

仅仅是因为test.py不符合在不成功时返回非零值的惯例。