sysexits.h(3head) | sysexits.h(3head) |
NAME¶
sysexits.h - exit codes for programs
LIBRARY¶
Standard C library (libc)
SYNOPSIS¶
#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 */ |
DESCRIPTION¶
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.
STANDARDS¶
BSD.
HISTORY¶
The <sysexits.h> file appeared in 4.0BSD for use by the deliverymail utility, later renamed to sendmail(8).
CAVEATS¶
The choice of an appropriate exit value is often ambiguous.
SEE ALSO¶
2023-03-30 | Linux man-pages 6.04 |