[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gmake exit codes
From: |
Glynn Clements |
Subject: |
Re: gmake exit codes |
Date: |
22 May 2004 03:06:48 +0100 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Security Through Obscurity) |
"Mark Brandyberry" <mdbrandy@uiuc.edu> writes:
> I am running a simple Perl script to build our code several ways each night.
> Something like:
>
> system("gmake <options>");
> system("gmake clean");
> system("gmake <different options>");
>
> etc.
>
> There are 30 different builds, and most of them work fine, and gmake returns
> "0" as expected. However, randomly (it seems), gmake appears to be
> returning "512" for 2 to 4 of the builds, and there doesn't seem to be a
> pattern of which ones will fail on any given night. Worse, if I go and
> build the same source base by hand using the same options, it will always
> build fine.
>
> The gnu make docs say that gmake will always return 0, 1, 2. Should it ever
> be returning "512" to me? If so, what would it mean?
The entry for system() in the perlfunc(1) manpage says:
The return value is the exit status of the program
as returned by the wait() call. To get the actual
exit value divide by 256. See also the exec entry
elsewhere in this document. This is NOT what you
want to use to capture the output from a command,
for that you should use merely backticks or qx//,
as described in the section on `STRING` in the
perlop manpage.
IOW, a value of 512 indicates that gmake terminated using exit(2) (or
the equivalent, e.g. returning 2 from main()).
It goes on to say:
You can check all the failure possibilities by
inspecting $? like this:
$exit_value = $? >> 8;
$signal_num = $? & 127;
$dumped_core = $? & 128;
IOW, bits 8-15 of the exit status contain the exit code (for normal
termination), bits 0-6 contain the fatal signal (for abnormal
termination), and bit 7 is set if the program dumped core.
--
Glynn Clements <glynn.clements@virgin.net>