# sysexits.h

## 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.
    


## CAVEATS



           The choice of an appropriate exit value is often ambiguous.
    


* * *