grabbing return codes from os.system() call
Cameron Laird
claird at starbase.neosoft.com
Thu Mar 8 10:43:33 EST 2001
In article <98795o$kq8$0 at 216.39.151.169>, Donn Cave <donn at oz.net> wrote:
>Quoth Damian Menscher <menscher+python at uiuc.edu>:
>| I'm new to Python (as in, my experience is essentially the tutorial),
>| but I've already come up with an interesting question:
>|
>| How do I get the return code from an os.system call? I would have
>| expected I could do something like
>|
>| ---returncode---
>| #/bin/csh
>| echo do stuff
>| exit 3
>|
>| and then in my python program I could do
>|
>| print os.system('./returncode')
>|
>| But it prints out 768. Not particularly useful, even after I recognize
>| the trick of dividing by 256 (byte-swapping going on? No, because a
>| return code of 768 reports as 0). Given that my real return codes
>| will be (possibly large) integers, this limitation will likely cause
>| some serious problems down the line.
>|
>| Even better would be a way of returning a string (the script I run
>| can be something other than csh, but it has to be a separate script).
>|
>| Ideas? I'm trying to avoid writing the string out to a file and then
>| read the file back in to the python program....
>
>Your return codes will not be larger than 255, that's all the bits
>there are for this kind of thing (on UNIX, anyway.) If you have a
>bigger number, you will have to put it somewhere else. So writing
>it out to a file might not be such a bad idea.
>
> Donn Cave, donn at oz.net
Guys, guys; you are making it too hard on Mr. Menscher. My guess
is that he'd appreciate being told that, if he creates /tmp/other
with contents
#!/bin/sh
echo "This is a string from an external process."
he can then have fun with
import os
print os.popen("/tmp/other").read()
--
Cameron Laird <claird at NeoSoft.com>
Business: http://www.Phaseit.net
Personal: http://starbase.neosoft.com/~claird/home.html
More information about the Python-list
mailing list