sysexits.h - exit codes for programs
Standard C library (libc)
#include <sysexits.h>
#define EX_OK |
0 |
/* |
successful termination */ |
#define EX__BASE |
64 |
/* |
base value for error messages */ |
#define EX_USAGE |
64 |
/* |
command line usage error */ |
#define EX_DATAERR |
65 |
/* |
data format error */ |
#define EX_NOINPUT |
66 |
/* |
cannot open input */ |
#define EX_NOUSER |
67 |
/* |
addressee unknown */ |
#define EX_NOHOST |
68 |
/* |
host name unknown */ |
#define EX_UNAVAILABLE |
69 |
/* |
service unavailable */ |
#define EX_SOFTWARE |
70 |
/* |
internal software error */ |
#define EX_OSERR |
71 |
/* |
system error (e.g., can't fork) */ |
#define EX_OSFILE |
72 |
/* |
critical OS file missing */ |
#define EX_CANTCREAT |
73 |
/* |
can't create (user) output file */ |
#define EX_IOERR |
74 |
/* |
input/output error */ |
#define EX_TEMPFAIL |
75 |
/* |
temp failure; user is invited to retry */ |
#define EX_PROTOCOL |
76 |
/* |
remote error in protocol */ |
#define EX_NOPERM |
77 |
/* |
permission denied */ |
#define EX_CONFIG |
78 |
/* |
configuration error */ |
#define EX__MAX |
... |
/* |
maximum listed value */ |
A few programs exit with the following error codes.
The successful exit is always indicated by a status of 0,
or EX_OK (equivalent to EXIT_SUCCESS from
<stdlib.h>). 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
- 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
- The input data was incorrect in some way. This should only be used for
user's data and not system files.
- EX_NOINPUT
- 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
- The user specified did not exist. This might be used for mail addresses or
remote logins.
- EX_NOHOST
- The host specified did not exist. This is used in mail addresses or
network requests.
- EX_UNAVAILABLE
- 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
- An internal software error has been detected. This should be limited to
non-operating system related errors if possible.
- EX_OSERR
- An operating system error has been detected. This is intended to be used
for such things as "cannot fork", "cannot create
pipe", or the like. It includes things like getuid(2)
returning a user that does not exist in the passwd(5) file.
- EX_OSFILE
- Some system file (e.g., /etc/passwd, /etc/utmp, etc.) does
not exist, cannot be opened, or has some sort of error (e.g., syntax
error).
- EX_CANTCREAT
- A (user specified) output file cannot be created.
- EX_IOERR
- An error occurred while doing I/O on some file.
- EX_TEMPFAIL
- Temporary failure, indicating something that is not really an error. For
example that a mailer could not create a connection, and the request
should be reattempted later.
- EX_PROTOCOL
- The remote system returned something that was "not possible"
during a protocol exchange.
- EX_OSFILE
- 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
- Something was found in an unconfigured or misconfigured state.
The numerical values corresponding to the symbolical ones are
given in parenthesis for easy reference.
The <sysexits.h> file appeared in 4.0BSD for use by
the deliverymail utility, later renamed to sendmail(8).
The choice of an appropriate exit value is often ambiguous.
err(3), error(3), exit(3)