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

ano*_*ous 37 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!!"
Run Code Online (Sandbox Code Playgroud)

请赐教:-)

Joc*_*zel 29

是的,Subprocess.call返回"实际流程返回代码".

您可以查看Subprocess.callSubprocess.Popen.returncode的官方文档


Ned*_*der 10

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


unu*_*tbu 5

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

test.py

#!/usr/bin/env python
success=False
if not success:
    exit()
Run Code Online (Sandbox Code Playgroud)

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

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