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 piece 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 :-)


Solution 1:

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

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

Solution 2:

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.