commands.getstatusoutput result is not command line exit value!!!

Steve Holden steve at holdenweb.com
Mon Oct 2 11:24:07 EDT 2006


Hari Sekhon wrote:
> I'm running a command like
> 
> import commands
> result = commands.getstatusoutput('somecommand')
> print result[0]
> 3072
> 
> 
> However, this exit code made no sense so I ran it manually from the 
> command line in bash on my linux server and it gives the exit code as 
> 12, not this weird 3072 number.
> 
> So I tried os.system('somecommand') in the interactive python shell and 
> it too returned the same result for the exit code as the unix shell, 12, 
> but re-running the commands.getstatusoutput() with the exact same 
> command still gave 3072.
> 
> 
> Is commands.getstatusoutput() broken or something?
> 
> 
> -h
> 
No, it's just returning the error code in the top half of a sixteen-bit 
value. You will notice that 3072 == 2 * 256.

That's always been the way the Unix return code has been returned 
programattically, but the shell shifts it down to make it more usab;e.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb       http://holdenweb.blogspot.com
Recent Ramblings     http://del.icio.us/steve.holden




More information about the Python-list mailing list