According to
style(9),
it is not good practice to call
exit(3)
with arbitrary values to indicate a failure condition when ending a program.
Instead, the pre-defined exit codes from
sysexits
should be used, so the caller of the process can get a rough
estimation about the failure class without looking up the source code.
The successful exit is always indicated by a status of 0, or
EX_OK.
Error numbers begin at
EX__BASE
to reduce the possibility of clashing with other exit statuses that
random programs may already return.
The meaning of the code is approximately as follows:
EX_USAGE(64)
The command was used incorrectly, e.g., with the wrong number of
arguments, a bad flag, bad syntax in a parameter, or whatever.
EX_DATAERR(65)
The input data was incorrect in some way.
This should only be used for user's data and not system files.
EX_NOINPUT(66)
An input file (not a system file) did not exist or was not readable.
This could also include errors like
\&No message
to a mailer (if it cared to catch it).
EX_NOUSER(67)
The user specified did not exist.
This might be used for mail addresses or remote logins.
EX_NOHOST(68)
The host specified did not exist.
This is used in mail addresses or network requests.
EX_UNAVAILABLE(69)
A service is unavailable.
This can occur if a support program or file does not exist.
This can also be used as a catch-all message when something you wanted
to do doesn't work, but you don't know why.
EX_SOFTWARE(70)
An internal software error has been detected.
This should be limited to non-operating system related errors if possible.
EX_OSERR(71)
An operating system error has been detected.
This is intended to be used for such things as
cannot fork,
or
cannot create pipe.
It includes things like
getuid(2)
returning a user that does not exist in the passwd file.
EX_OSFILE(72)
Some system file (e.g.,
/etc/passwd,
/var/run/utmp)
does not exist, cannot be opened, or has some sort of error
(e.g., syntax error).
EX_CANTCREAT(73)
A (user specified) output file cannot be created.
EX_IOERR(74)
An error occurred while doing I/O on some file.
EX_TEMPFAIL(75)
Temporary failure, indicating something that is not really an error.
In sendmail, this means that a mailer, for example, could not create a
connection, and the request should be reattempted later.
EX_PROTOCOL(76)
The remote system returned something that was
not possible
during a protocol exchange.
EX_NOPERM(77)
You did not have sufficient permission to perform the operation.
This is not intended for file system problems, which should use
EX_NOINPUT
or
EX_CANTCREAT,
but rather for higher level permissions.
EX_CONFIG(78)
Something was found in an unconfigured or misconfigured state.
The numerical values corresponding to the symbolical ones are given in
parentheses for easy reference.