# Error numbers

From cppreference.com
< cpp‎ | error

Each of the macros defined in `<cerrno>` expands to integer constant expressions with type int, each with a positive value, matching most of the POSIX error codes. The following constants are defined (the implementation may define more, as long as they begin with 'E' followed by digits or uppercase letters).

Defined in header `<cerrno>`
E2BIG (C++11) | Argument list too long (macro constant)
EACCES (C++11) | Permission denied (macro constant)
EADDRINUSE (C++11) | Address in use (macro constant)
EADDRNOTAVAIL (C++11) | Address not available (macro constant)
EAFNOSUPPORT (C++11) | Address family not supported (macro constant)
EAGAIN (C++11) | Resource unavailable, try again (macro constant)
EALREADY (C++11) | Connection already in progress (macro constant)
EBADF (C++11) | Bad file descriptor (macro constant)
EBADMSG (C++11) | Bad message (macro constant)
EBUSY (C++11) | Device or resource busy (macro constant)
ECANCELED (C++11) | Operation canceled (macro constant)
ECHILD (C++11) | No child processes (macro constant)
ECONNABORTED (C++11) | Connection aborted (macro constant)
ECONNREFUSED (C++11) | Connection refused (macro constant)
ECONNRESET (C++11) | Connection reset (macro constant)
EDEADLK (C++11) | Resource deadlock would occur (macro constant)
EDESTADDRREQ (C++11) | Destination address required (macro constant)
EDOM | Mathematics argument out of domain of function (macro constant)
EEXIST (C++11) | File exists (macro constant)
EFAULT (C++11) | Bad address (macro constant)
EFBIG (C++11) | File too large (macro constant)
EHOSTUNREACH (C++11) | Host is unreachable (macro constant)
EIDRM (C++11) | Identifier removed (macro constant)
EILSEQ (C++11) | Illegal byte sequence (macro constant)
EINPROGRESS (C++11) | Operation in progress (macro constant)
EINTR (C++11) | Interrupted function (macro constant)
EINVAL (C++11) | Invalid argument (macro constant)
EIO (C++11) | I/O error (macro constant)
EISCONN (C++11) | Socket is connected (macro constant)
EISDIR (C++11) | Is a directory (macro constant)
ELOOP (C++11) | Too many levels of symbolic links (macro constant)
EMFILE (C++11) | File descriptor value too large (macro constant)
EMLINK (C++11) | Too many links (macro constant)
EMSGSIZE (C++11) | Message too large (macro constant)
ENAMETOOLONG (C++11) | Filename too long (macro constant)
ENETDOWN (C++11) | Network is down (macro constant)
ENETRESET (C++11) | Connection aborted by network (macro constant)
ENETUNREACH (C++11) | Network unreachable (macro constant)
ENFILE (C++11) | Too many files open in system (macro constant)
ENOBUFS (C++11) | No buffer space available (macro constant)
ENODATA (C++11) | No message is available on the STREAM head read queue (macro constant)
ENODEV (C++11) | No such device (macro constant)
ENOENT (C++11) | No such file or directory (macro constant)
ENOEXEC (C++11) | Executable file format error (macro constant)
ENOLCK (C++11) | No locks available (macro constant)
ENOLINK (C++11) | Link has been severed (macro constant)
ENOMEM (C++11) | Not enough space (macro constant)
ENOMSG (C++11) | No message of the desired type (macro constant)
ENOPROTOOPT (C++11) | Protocol not available (macro constant)
ENOSPC (C++11) | No space left on device (macro constant)
ENOSR (C++11) | No STREAM resources (macro constant)
ENOSTR (C++11) | Not a STREAM (macro constant)
ENOSYS (C++11) | Function not supported (macro constant)
ENOTCONN (C++11) | The socket is not connected (macro constant)
ENOTDIR (C++11) | Not a directory (macro constant)
ENOTEMPTY (C++11) | Directory not empty (macro constant)
ENOTRECOVERABLE (C++11) | State not recoverable (macro constant)
ENOTSOCK (C++11) | Not a socket (macro constant)
ENOTSUP (C++11) | Not supported (macro constant)
ENOTTY (C++11) | Inappropriate I/O control operation (macro constant)
ENXIO (C++11) | No such device or address (macro constant)
EOPNOTSUPP (C++11) | Operation not supported on socket (macro constant)
EOVERFLOW (C++11) | Value too large to be stored in data type (macro constant)
EOWNERDEAD (C++11) | Previous owner died (macro constant)
EPERM (C++11) | Operation not permitted (macro constant)
EPIPE (C++11) | Broken pipe (macro constant)
EPROTO (C++11) | Protocol error (macro constant)
EPROTONOSUPPORT (C++11) | Protocol not supported (macro constant)
EPROTOTYPE (C++11) | Protocol wrong type for socket (macro constant)
ERANGE | Result too large (macro constant)
EROFS (C++11) | Read-only file system (macro constant)
ESPIPE (C++11) | Invalid seek (macro constant)
ESRCH (C++11) | No such process (macro constant)
ETIME (C++11) | Stream ioctl() timeout (macro constant)
ETIMEDOUT (C++11) | Connection timed out (macro constant)
ETXTBSY (C++11) | Text file busy (macro constant)
EWOULDBLOCK (C++11) | Operation would block (macro constant)
EXDEV (C++11) | Cross-device link (macro constant)

All values are required to be unique except that the values of `EOPNOTSUPP` and `ENOTSUP` may be identical and the values of `EAGAIN` and `EWOULDBLOCK` may be identical.

### Example

Run this code

    #include <cerrno>
    #include <cstring>
    #include <iomanip>
    #include <iostream>

    #define SHOW(x) std::cout << std::setw(15) << #x << ": " << std::strerror(x) << '\n'

    int main()
    {
        std::cout << "Known error codes/messages:\n\n";

        SHOW( E2BIG );
        SHOW( EACCES );
        SHOW( EADDRINUSE );
        SHOW( EADDRNOTAVAIL );
        SHOW( EAFNOSUPPORT );
        SHOW( EAGAIN );
        SHOW( EALREADY );
        SHOW( EBADF );
        SHOW( EBADMSG );
        SHOW( EBUSY );
        SHOW( ECANCELED );
        SHOW( ECHILD );
        SHOW( ECONNABORTED );
        SHOW( ECONNREFUSED );
        SHOW( ECONNRESET );
        SHOW( EDEADLK );
        SHOW( EDESTADDRREQ );
        SHOW( EDOM );
        SHOW( EEXIST );
        SHOW( EFAULT );
        SHOW( EFBIG );
        SHOW( EHOSTUNREACH );
        SHOW( EIDRM );
        SHOW( EILSEQ );
        SHOW( EINPROGRESS );
        SHOW( EINTR );
        SHOW( EINVAL );
        SHOW( EIO );
        SHOW( EISCONN );
        SHOW( EISDIR );
        SHOW( ELOOP );
        SHOW( EMFILE );
        SHOW( EMLINK );
        SHOW( EMSGSIZE );
        SHOW( ENAMETOOLONG );
        SHOW( ENETDOWN );
        SHOW( ENETRESET );
        SHOW( ENETUNREACH );
        SHOW( ENFILE );
        SHOW( ENOBUFS );
        SHOW( ENODATA );
        SHOW( ENODEV );
        SHOW( ENOENT );
        SHOW( ENOEXEC );
        SHOW( ENOLCK );
        SHOW( ENOLINK );
        SHOW( ENOMEM );
        SHOW( ENOMSG );
        SHOW( ENOPROTOOPT );
        SHOW( ENOSPC );
        SHOW( ENOSR );
        SHOW( ENOSTR );
        SHOW( ENOSYS );
        SHOW( ENOTCONN );
        SHOW( ENOTDIR );
        SHOW( ENOTEMPTY );
        SHOW( ENOTRECOVERABLE );
        SHOW( ENOTSOCK );
        SHOW( ENOTSUP );
        SHOW( ENOTTY );
        SHOW( ENXIO );
        SHOW( EOPNOTSUPP );
        SHOW( EOVERFLOW );
        SHOW( EOWNERDEAD );
        SHOW( EPERM );
        SHOW( EPIPE );
        SHOW( EPROTO );
        SHOW( EPROTONOSUPPORT );
        SHOW( EPROTOTYPE );
        SHOW( ERANGE );
        SHOW( EROFS );
        SHOW( ESPIPE );
        SHOW( ESRCH );
        SHOW( ETIME );
        SHOW( ETIMEDOUT );
        SHOW( ETXTBSY );
        SHOW( EWOULDBLOCK );
        SHOW( EXDEV );
    }

Possible output:

    Known error codes/messages:

              E2BIG: Argument list too long
             EACCES: Permission denied
         EADDRINUSE: Address already in use
      EADDRNOTAVAIL: Cannot assign requested address
       EAFNOSUPPORT: Address family not supported by protocol
             EAGAIN: Resource temporarily unavailable
           EALREADY: Operation already in progress
              EBADF: Bad file descriptor
            EBADMSG: Bad message
              EBUSY: Device or resource busy
          ECANCELED: Operation canceled
             ECHILD: No child processes
       ECONNABORTED: Software caused connection abort
       ECONNREFUSED: Connection refused
         ECONNRESET: Connection reset by peer
            EDEADLK: Resource deadlock avoided
       EDESTADDRREQ: Destination address required
               EDOM: Numerical argument out of domain
             EEXIST: File exists
             EFAULT: Bad address
              EFBIG: File too large
       EHOSTUNREACH: No route to host
              EIDRM: Identifier removed
             EILSEQ: Invalid or incomplete multibyte or wide character
        EINPROGRESS: Operation now in progress
              EINTR: Interrupted system call
             EINVAL: Invalid argument
                EIO: Input/output error
            EISCONN: Transport endpoint is already connected
             EISDIR: Is a directory
              ELOOP: Too many levels of symbolic links
             EMFILE: Too many open files
             EMLINK: Too many links
           EMSGSIZE: Message too long
       ENAMETOOLONG: File name too long
           ENETDOWN: Network is down
          ENETRESET: Network dropped connection on reset
        ENETUNREACH: Network is unreachable
             ENFILE: Too many open files in system
            ENOBUFS: No buffer space available
            ENODATA: No data available
             ENODEV: No such device
             ENOENT: No such file or directory
            ENOEXEC: Exec format error
             ENOLCK: No locks available
            ENOLINK: Link has been severed
             ENOMEM: Cannot allocate memory
             ENOMSG: No message of desired type
        ENOPROTOOPT: Protocol not available
             ENOSPC: No space left on device
              ENOSR: Out of streams resources
             ENOSTR: Device not a stream
             ENOSYS: Function not implemented
           ENOTCONN: Transport endpoint is not connected
            ENOTDIR: Not a directory
          ENOTEMPTY: Directory not empty
    ENOTRECOVERABLE: State not recoverable
           ENOTSOCK: Socket operation on non-socket
            ENOTSUP: Operation not supported
             ENOTTY: Inappropriate ioctl for device
              ENXIO: No such device or address
         EOPNOTSUPP: Operation not supported
          EOVERFLOW: Value too large for defined data type
         EOWNERDEAD: Owner died
              EPERM: Operation not permitted
              EPIPE: Broken pipe
             EPROTO: Protocol error
    EPROTONOSUPPORT: Protocol not supported
         EPROTOTYPE: Protocol wrong type for socket
             ERANGE: Numerical result out of range
              EROFS: Read-only file system
             ESPIPE: Illegal seek
              ESRCH: No such process
              ETIME: Timer expired
          ETIMEDOUT: Connection timed out
            ETXTBSY: Text file busy
        EWOULDBLOCK: Resource temporarily unavailable
              EXDEV: Invalid cross-device link

### See also

errc (C++11) | the std::error_condition enumeration listing all standard `<cerrno>` macro constants (class)
errno | macro which expands to POSIX-compatible thread-local error number variable (macro variable)
perror | displays a character string corresponding of the current error to stderr (function)
strerror | returns a text version of a given error code (function)
C documentation for Error numbers

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/error/errno_macros&oldid=157320"