python with echo

MRAB python at mrabarnett.plus.com
Thu Nov 12 21:22:26 EST 2009


Steven D'Aprano wrote:
> On Thu, 12 Nov 2009 19:30:01 +0000, MRAB wrote:
> 
>>> I don't understand that. Exit status codes on all systems I'm familiar
>>> with are limited to 0 through 255. What operating system are you using?
>>>
>>> Assuming your system allows two-byte exit statuses, you should check
>>> the documentation for echo and the shell to see why it is returning
>>> 256.
>>>
>> In some OSs the exit status consists of 2 fields, one being the child
>> process's exit status and the other being supplied by the OS.
> 
> Which OSes?
> 
>> The reason is simple. What if the child process terminated abnormally?
>> You'd like an exit status to tell you that, 
> 
> Which it does. Anything other than 0 is an error. I see that, for 
> example, if I interrupt "sleep 30" with ctrl-C instead of waiting for it 
> to exit normally, it returns with an exit status of 130.
> 
> [steve at soy ~]$ sleep 3  # no interrupt
> [steve at soy ~]$ echo $?
> 0
> [steve at soy ~]$ sleep 3  # interrupt with ctrl-C
> 
> [steve at soy ~]$ echo $?
> 130
> 
> I get the same result on a Linux box and a Solaris box, both running bash.
> 
> 
> 
>> but you wouldn't want it to
>> be confused with the child process's own exit status, assuming that it
>> had terminated normally.
> 
> I don't understand what you mean here. Why are you assuming it terminated 
> normally if it terminated abnormally?
> 
You want to be able to distinguish between a child process terminating
with an exit status, and failing to run a child process for some reason.



More information about the Python-list mailing list