On Saturday 03 April 2010 04:22 PM, Cameron Simpson wrote:
On 03Apr2010 17:07, Dave Ihnat<dihnat(a)dminet.com> wrote:
| On Sat, Apr 03, 2010 at 01:53:40PM -0700, Suvayu Ali wrote:
|> Whenever some job is sent to the background and it finishes, it displays
|> a message on the shell with the exit code. ...
|> ...
|> I understand that I can get the exit code with $? but is there some way
|> I can get the associated message (Done/Terminated/Sementation Fault...)
|> with the exit code?
|
| Unfortunately, every exit code is a function of the individual program
| that last ran, or the shellscript itself. Do a man on the various
| commands; you'll find a wide range of exit codes. About the only thing
| you can really count on--usually--is that an exit code of zero means
| everything was OK.
However, in the context of Suvayu's query (getting the _shell_'s job
control messages) the codes are universal, since the shell's knowledge
is as non-specific as you describe.
So the shell can report Terminated and Segmentation Fault reliably and
Done versus failed because the wait status has distinct information.
So he should be able to check done versus failed ($? == 0 versus
nonzero), and he may find the shell returns negative values for
"terminated by signal N". Core dumps may not be exposed by the shell.
Suvayu: try this:
sleep 3600&
kill -9 $!; wait; echo "\$?=$?"
and repeat with various kill numbers. See if you get anything useful.
Thank you Cameron for the hints! With some more thinking and some help
from my roomie, I found something useful to work with. Substituting `n'
below gives me quite a bit to experiment with. :)
$ sleep 3600 &
$ pid=$! ;kill -n $pid;wait $pid;echo "$pid exited with $?"
Cheers,
Thanks a lot. :)
--
Suvayu
Open source is the future. It sets us free.