user1245262
user1245262

Reputation: 7505

Confusion with Python subprocess

I'm trying to run some external executable code from within Python and then make use of the output.The code I'm using takes an external file and returns a single number (the number of images encoded in that file). When I run from the command line, I see the following:

me@ubuntu:~/nist/hsfsys/bin$ ./nummis  /usr/local/hsfsys/data/by_class/4a/train_4a.mis 
3962

Where 3962 is a correct output as near as I can tell

However, when I try to use subprocess from within Python, I get the following error:

me@ubuntu:~/nist/hsfsys/bin$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.check_output(["./nummis","/usr/local/hsfsys/data/by_class/4a/train_4a.mis"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['./nummis', '/usr/local/hsfsys/data/by_class/4a/train_4a.mis']' returned non-zero exit status 32
>>> subprocess.call(["./nummis","/usr/local/hsfsys/data/by_class/4a/train_4a.mis"])
3962
32

How should I interpret this "non-zero exit status 32" ? If something is wrong, why don't I see it on the command line? If nothing is wrong, why is Python complaining & how can I get it to stop complaining?

Upvotes: 2

Views: 675

Answers (1)

glglgl
glglgl

Reputation: 91017

The command line only reports the exit status when explicitly asked for it.

After calling your program from the command line, try

echo $?

in order to show the exit status. If it shows 32 as well, it is the called program which is guilty. It doesn't properly return 0; or return EXIT_SUCCESS; in its main().

Upvotes: 2

Related Questions