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

Hari Sekhon hpsekhon at googlemail.com
Mon Oct 2 11:37:41 EDT 2006


I don't quite understand what you are saying here:

2 * 256 is 512,
2 ** 256 is some extremely large number.

2**12 is 4096.

So how does 3072 factor into this?

Could you explain what you mean by "the error in the top half of a 
sixteen-bit value"?

This makes no sense to me at this moment.

-h

Hari Sekhon



Steve Holden wrote:
> 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
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20061002/8a610b44/attachment.html>


More information about the Python-list mailing list