开发者

What is the return value of subprocess.call()?

I am not sure what the return value of subprocess.call() means.

  • Can I safely assume a zero value will always mean that the command executed successfully?

  • Is the return value equivalent to the exit staus of a shell command?

For example, will the following piec开发者_如何学Pythone of code work for virtually any command on 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!!"

Please enlighten me :-)


Yes, Subprocess.call returns "actual process return code".

You can check official documentation of Subprocess.call and Subprocess.Popen.returncode


It is the return code, but keep in mind it's up to the author of the subprocess what the return code means. There is a strong culture of 0 meaning success, but there's nothing enforcing it.


You are at the mercy of the commands that you call. Consider this:

test.py

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

Then running your code (with cmd='test.py') will result in SUCCESS!!

merely because test.py does not conform to the convention of returning a non-zero value when it is not successful.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜