cjwatson at ubuntu.com
Tue Oct 10 14:08:23 BST 2006
On Fri, Sep 15, 2006 at 01:01:29PM -0700, Micah J. Cowan wrote:
> On Fri, Sep 15, 2006 at 02:06:56PM -0500, Rocco Stanzione wrote:
> > "Internally, for purposes of deciding whether a command exits with a non-zero
> > exit status, the shell shall recognize the entire status value retrieved for
> > the command by the equivalent of the wait() function WEXITSTATUS macro (as
> > defined in the System Interfaces volume of IEEE Std 1003.1-2001). When
> > reporting the exit status with the special parameter '?', the shell shall
> > report the full eight bits of exit status available."
> Others have already pointed out the irrelevance of these quotes to the
> actual bug under discussion. I'd also like to point out that your
> reading of them is incorrect from an exit status point of view as well.
> Even in bash, executing ( exit -1 ) will result in a value of 255 in $?,
> as, just with return, the exit status for all processes is stored in an
> unsigned 8-bit field within an int.
And furthermore, you can't use the WEXITSTATUS macro if wait() returns
Evaluates to a non-zero value if status was returned for a child
process that terminated normally.
If the value of WIFEXITED(stat_val) is non-zero, this macro
evaluates to the low-order 8 bits of the status argument that
the child process passed to _exit() or exit(), or the value the
child process returned from main().
Colin Watson [cjwatson at ubuntu.com]
More information about the ubuntu-devel