I'm sorry, this may seem dense to you but I have to ask. What on earth are you talking about?
Why is it shifted 8 bits to the left? Why is there bitshifting at all? Why doesn't commands give the same exit value as os.system() and the unix cli? When you choose to exit a program you give it a return value to exit with, so why would this change, I exit with the number 1 then expect that number to be the exit code, right? Where do these higher numbers come into the equation and why? Please assume that I am not a mind reader and require explanation before I can understand. Perhaps you aren't a mind reader either and don't know why the writers of the commands lib chose to do this insanity either? It seems the os.system() guys did the right thing, I wonder why commands.getstatusoutput doesn't... Having just tested it manually with a shell script returning 2, commands.getstatusoutput did give the exit code as 512, so it does seem to generically shift the exit code 8 bits to the left or multiply it by 256 for those of us who need some more straight talking... ugg, perhaps it's time to stop using this thing and use a better lib module. any explanations welcome... -h Hari Sekhon Steve Holden wrote: > A famous Holden typo - it should have been "12 * 256 == 3072", but > really it shouldn't have been beyond you to perform a division of 3072 > by 12 (given that you already knew the number 12 was potentially > involved). > > Basically the value you want is shifted up 8 bits. Perhaps I should > more understandably have said: > > 12 << 8 == 3072 > > regards > Steve > > Hari Sekhon wrote: >> 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 >>> >>> > > -- http://mail.python.org/mailman/listinfo/python-list