errno.h
Template:Short description Template:C Standard Library
Page Template:Mono/styles.css has no content.<errno.h> is a header file in the standard library of the C programming language. It defines macros for reporting and retrieving error conditions using the symbol errno (short form for "error number").[1]
errno acts like an integer variable. A value (the error number) is stored in errno by certain library functions when they detect errors. At program startup, the value stored is zero. Library functions store only values greater than zero. Any library function can alter the value stored before return, whether or not they detect errors.[2] Most functions indicate that they detected an error by returning a special value, typically Page Template:Mono/styles.css has no content.NULL for functions that return pointers, and Page Template:Mono/styles.css has no content.-1 for functions that return integers. A few functions require the caller to preset errno to zero and test it afterwards to see if an error was detected.
The errno macro expands to an lvalue with type int, sometimes with the extern and/or volatile type specifiers depending upon the platform.[3] Originally this was a static memory location, but macros are almost always used today to allow for multi-threading, so that each thread will see its own thread-local error number.
The header file also defines macros that expand to integer constants that represent the error codes. The C standard library only requires three to be defined:[2]
| Page Template:Mono/styles.css has no content.EDOM | A parameter was outside a function's domain, e.g. sqrt(-1)
|
| Page Template:Mono/styles.css has no content.ERANGE | A result outside a function's range, e.g. strtol("0xfffffffff", NULL, 0) on systems with a 32-bit wide long
|
| Page Template:Mono/styles.css has no content.EILSEQ | (Required since 1994 Amendment 1 to C89 standard)[4] Illegal byte sequence, e.g. mbstowcs(buf, "\xff", 1) on systems that use UTF-8.
|
POSIX compliant operating systems like AIX, Linux or Solaris include many other error values, many of which are used much more often than the above ones, such as EACCES for when a file cannot be opened for reading.[5] C++11 additionally defines many of the same values found within the POSIX specification.[6]
Traditionally, the first page of Unix system manuals, named intro(2), lists all errno.h macros, but this is not the case with Linux, where these macros are instead listed in the errno(3).Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
An errno can be translated to a descriptive string using Page Template:Mono/styles.css has no content.strerror (defined in Page Template:Mono/styles.css has no content.<string.h>) or a BSD extension called sys_errlist. The translation can be printed directly to the standard error stream using Page Template:Mono/styles.css has no content.perror (defined in Page Template:Mono/styles.css has no content.<stdio.h>). As strerror in many Unix-like systems is not thread-safe, a thread-safe version strerror_r is used, but conflicting definitions from POSIX and GNU makes it even less portable than the sys_errlist table.[7]
POSIX errors
The GNU C library (GLIBC) provides the additional POSIX error values macros in the header file Page Template:Mono/styles.css has no content.<errno.h>.[8] These are the descriptions of the macros provided by Page Template:Mono/styles.css has no content.strerror.
| Symbol | Value[9] | Description |
|---|---|---|
| Page Template:Mono/styles.css has no content.EPERM | Page Template:Mono/styles.css has no content.1 | Operation not permitted |
| Page Template:Mono/styles.css has no content.ENOENT | Page Template:Mono/styles.css has no content.2 | No such file or directory |
| Page Template:Mono/styles.css has no content.ESRCH | Page Template:Mono/styles.css has no content.3 | No such process |
| Page Template:Mono/styles.css has no content.EINTR | Page Template:Mono/styles.css has no content.4 | Interrupted system call |
| Page Template:Mono/styles.css has no content.EIO | Page Template:Mono/styles.css has no content.5 | Input/output error |
| Page Template:Mono/styles.css has no content.ENXIO | Page Template:Mono/styles.css has no content.6 | No such device or address |
| Page Template:Mono/styles.css has no content.E2BIG | Page Template:Mono/styles.css has no content.7 | Argument list too long |
| Page Template:Mono/styles.css has no content.ENOEXEC | Page Template:Mono/styles.css has no content.8 | Exec format error |
| Page Template:Mono/styles.css has no content.EBADF | Page Template:Mono/styles.css has no content.9 | Bad file descriptor |
| Page Template:Mono/styles.css has no content.ECHILD | Page Template:Mono/styles.css has no content.10 | No child processes |
| Page Template:Mono/styles.css has no content.EAGAIN | Page Template:Mono/styles.css has no content.11 | Resource temporarily unavailable |
| Page Template:Mono/styles.css has no content.ENOMEM | Page Template:Mono/styles.css has no content.12 | Cannot allocate memory |
| Page Template:Mono/styles.css has no content.EACCES | Page Template:Mono/styles.css has no content.13 | Permission denied |
| Page Template:Mono/styles.css has no content.EFAULT | Page Template:Mono/styles.css has no content.14 | Bad address |
| Page Template:Mono/styles.css has no content.ENOTBLK | Page Template:Mono/styles.css has no content.15 | Block device required |
| Page Template:Mono/styles.css has no content.EBUSY | Page Template:Mono/styles.css has no content.16 | Device or resource busy |
| Page Template:Mono/styles.css has no content.EEXIST | Page Template:Mono/styles.css has no content.17 | File exists |
| Page Template:Mono/styles.css has no content.EXDEV | Page Template:Mono/styles.css has no content.18 | Invalid cross-device link |
| Page Template:Mono/styles.css has no content.ENODEV | Page Template:Mono/styles.css has no content.19 | No such device |
| Page Template:Mono/styles.css has no content.ENOTDIR | Page Template:Mono/styles.css has no content.20 | Not a directory |
| Page Template:Mono/styles.css has no content.EISDIR | Page Template:Mono/styles.css has no content.21 | Is a directory |
| Page Template:Mono/styles.css has no content.EINVAL | Page Template:Mono/styles.css has no content.22 | Invalid argument |
| Page Template:Mono/styles.css has no content.ENFILE | Page Template:Mono/styles.css has no content.23 | Too many open files in system |
| Page Template:Mono/styles.css has no content.EMFILE | Page Template:Mono/styles.css has no content.24 | Too many open files |
| Page Template:Mono/styles.css has no content.ENOTTY | Page Template:Mono/styles.css has no content.25 | Inappropriate ioctl for device |
| Page Template:Mono/styles.css has no content.ETXTBSY | Page Template:Mono/styles.css has no content.26 | Text file busy |
| Page Template:Mono/styles.css has no content.EFBIG | Page Template:Mono/styles.css has no content.27 | File too large |
| Page Template:Mono/styles.css has no content.ENOSPC | Page Template:Mono/styles.css has no content.28 | No space left on device |
| Page Template:Mono/styles.css has no content.ESPIPE | Page Template:Mono/styles.css has no content.29 | Illegal seek |
| Page Template:Mono/styles.css has no content.EROFS | Page Template:Mono/styles.css has no content.30 | Read-only file system |
| Page Template:Mono/styles.css has no content.EMLINK | Page Template:Mono/styles.css has no content.31 | Too many links |
| Page Template:Mono/styles.css has no content.EPIPE | Page Template:Mono/styles.css has no content.32 | Broken pipe |
| Page Template:Mono/styles.css has no content.EDOM | Page Template:Mono/styles.css has no content.33 | Numerical argument out of domain |
| Page Template:Mono/styles.css has no content.ERANGE | Page Template:Mono/styles.css has no content.34 | Numerical result out of range |
| Page Template:Mono/styles.css has no content.EDEADLK | Page Template:Mono/styles.css has no content.35 | Resource deadlock avoided |
| Page Template:Mono/styles.css has no content.ENAMETOOLONG | Page Template:Mono/styles.css has no content.36 | File name too long |
| Page Template:Mono/styles.css has no content.ENOLCK | Page Template:Mono/styles.css has no content.37 | No locks available |
| Page Template:Mono/styles.css has no content.ENOSYS | Page Template:Mono/styles.css has no content.38 | Function not implemented |
| Page Template:Mono/styles.css has no content.ENOTEMPTY | Page Template:Mono/styles.css has no content.39 | Directory not empty |
| Page Template:Mono/styles.css has no content.ELOOP | Page Template:Mono/styles.css has no content.40 | Too many levels of symbolic links |
| Page Template:Mono/styles.css has no content.ENOMSG | Page Template:Mono/styles.css has no content.42 | No message of desired type |
| Page Template:Mono/styles.css has no content.EIDRM | Page Template:Mono/styles.css has no content.43 | Identifier removed |
| Page Template:Mono/styles.css has no content.ECHRNG | Page Template:Mono/styles.css has no content.44 | Channel number out of range |
| Page Template:Mono/styles.css has no content.EL2NSYNC | Page Template:Mono/styles.css has no content.45 | Level 2 not synchronized |
| Page Template:Mono/styles.css has no content.EL3HLT | Page Template:Mono/styles.css has no content.46 | Level 3 halted |
| Page Template:Mono/styles.css has no content.EL3RST | Page Template:Mono/styles.css has no content.47 | Level 3 reset |
| Page Template:Mono/styles.css has no content.ELNRNG | Page Template:Mono/styles.css has no content.48 | Link number out of range |
| Page Template:Mono/styles.css has no content.EUNATCH | Page Template:Mono/styles.css has no content.49 | Protocol driver not attached |
| Page Template:Mono/styles.css has no content.ENOCSI | Page Template:Mono/styles.css has no content.50 | No CSI structure available |
| Page Template:Mono/styles.css has no content.EL2HLT | Page Template:Mono/styles.css has no content.51 | Level 2 halted |
| Page Template:Mono/styles.css has no content.EBADE | Page Template:Mono/styles.css has no content.52 | Invalid exchange |
| Page Template:Mono/styles.css has no content.EBADR | Page Template:Mono/styles.css has no content.53 | Invalid request descriptor |
| Page Template:Mono/styles.css has no content.EXFULL | Page Template:Mono/styles.css has no content.54 | Exchange full |
| Page Template:Mono/styles.css has no content.ENOANO | Page Template:Mono/styles.css has no content.55 | No anode |
| Page Template:Mono/styles.css has no content.EBADRQC | Page Template:Mono/styles.css has no content.56 | Invalid request code |
| Page Template:Mono/styles.css has no content.EBADSLT | Page Template:Mono/styles.css has no content.57 | Invalid slot |
| Page Template:Mono/styles.css has no content.EBFONT | Page Template:Mono/styles.css has no content.59 | Bad font file format |
| Page Template:Mono/styles.css has no content.ENOSTR | Page Template:Mono/styles.css has no content.60 | Device not a stream |
| Page Template:Mono/styles.css has no content.ENODATA | Page Template:Mono/styles.css has no content.61 | No data available |
| Page Template:Mono/styles.css has no content.ETIME | Page Template:Mono/styles.css has no content.62 | Timer expired |
| Page Template:Mono/styles.css has no content.ENOSR | Page Template:Mono/styles.css has no content.63 | Out of streams resources |
| Page Template:Mono/styles.css has no content.ENONET | Page Template:Mono/styles.css has no content.64 | Machine is not on the network |
| Page Template:Mono/styles.css has no content.ENOPKG | Page Template:Mono/styles.css has no content.65 | Package not installed |
| Page Template:Mono/styles.css has no content.EREMOTE | Page Template:Mono/styles.css has no content.66 | Object is remote |
| Page Template:Mono/styles.css has no content.ENOLINK | Page Template:Mono/styles.css has no content.67 | Link has been severed |
| Page Template:Mono/styles.css has no content.EADV | Page Template:Mono/styles.css has no content.68 | Advertise error |
| Page Template:Mono/styles.css has no content.ESRMNT | Page Template:Mono/styles.css has no content.69 | Srmount error |
| Page Template:Mono/styles.css has no content.ECOMM | Page Template:Mono/styles.css has no content.70 | Communication error on send |
| Page Template:Mono/styles.css has no content.EPROTO | Page Template:Mono/styles.css has no content.71 | Protocol error |
| Page Template:Mono/styles.css has no content.EMULTIHOP | Page Template:Mono/styles.css has no content.72 | Multihop attempted |
| Page Template:Mono/styles.css has no content.EDOTDOT | Page Template:Mono/styles.css has no content.73 | RFS specific error |
| Page Template:Mono/styles.css has no content.EBADMSG | Page Template:Mono/styles.css has no content.74 | Bad message |
| Page Template:Mono/styles.css has no content.EOVERFLOW | Page Template:Mono/styles.css has no content.75 | Value too large for defined data type |
| Page Template:Mono/styles.css has no content.ENOTUNIQ | Page Template:Mono/styles.css has no content.76 | Name not unique on network |
| Page Template:Mono/styles.css has no content.EBADFD | Page Template:Mono/styles.css has no content.77 | File descriptor in bad state |
| Page Template:Mono/styles.css has no content.EREMCHG | Page Template:Mono/styles.css has no content.78 | Remote address changed |
| Page Template:Mono/styles.css has no content.ELIBACC | Page Template:Mono/styles.css has no content.79 | Can not access a needed shared library |
| Page Template:Mono/styles.css has no content.ELIBBAD | Page Template:Mono/styles.css has no content.80 | Accessing a corrupted shared library |
| Page Template:Mono/styles.css has no content.ELIBSCN | Page Template:Mono/styles.css has no content.81 | Page Template:Mono/styles.css has no content..lib section in Page Template:Mono/styles.css has no content.a.out corrupted |
| Page Template:Mono/styles.css has no content.ELIBMAX | Page Template:Mono/styles.css has no content.82 | Attempting to link in too many shared libraries |
| Page Template:Mono/styles.css has no content.ELIBEXEC | Page Template:Mono/styles.css has no content.83 | Cannot exec a shared library directly |
| Page Template:Mono/styles.css has no content.EILSEQ | Page Template:Mono/styles.css has no content.84 | Invalid or incomplete multibyte or wide character |
| Page Template:Mono/styles.css has no content.ERESTART | Page Template:Mono/styles.css has no content.85 | Interrupted system call should be restarted |
| Page Template:Mono/styles.css has no content.ESTRPIPE | Page Template:Mono/styles.css has no content.86 | Streams pipe error |
| Page Template:Mono/styles.css has no content.EUSERS | Page Template:Mono/styles.css has no content.87 | Too many users |
| Page Template:Mono/styles.css has no content.ENOTSOCK | Page Template:Mono/styles.css has no content.88 | Socket operation on non-socket |
| Page Template:Mono/styles.css has no content.EDESTADDRREQ | Page Template:Mono/styles.css has no content.89 | Destination address required |
| Page Template:Mono/styles.css has no content.EMSGSIZE | Page Template:Mono/styles.css has no content.90 | Message too long |
| Page Template:Mono/styles.css has no content.EPROTOTYPE | Page Template:Mono/styles.css has no content.91 | Protocol wrong type for socket |
| Page Template:Mono/styles.css has no content.ENOPROTOOPT | Page Template:Mono/styles.css has no content.92 | Protocol not available |
| Page Template:Mono/styles.css has no content.EPROTONOSUPPORT | Page Template:Mono/styles.css has no content.93 | Protocol not supported |
| Page Template:Mono/styles.css has no content.ESOCKTNOSUPPORT | Page Template:Mono/styles.css has no content.94 | Socket type not supported |
| Page Template:Mono/styles.css has no content.EOPNOTSUPP | Page Template:Mono/styles.css has no content.95 | Operation not supported |
| Page Template:Mono/styles.css has no content.EPFNOSUPPORT | Page Template:Mono/styles.css has no content.96 | Protocol family not supported |
| Page Template:Mono/styles.css has no content.EAFNOSUPPORT | Page Template:Mono/styles.css has no content.97 | Address family not supported by protocol |
| Page Template:Mono/styles.css has no content.EADDRINUSE | Page Template:Mono/styles.css has no content.98 | Address already in use |
| Page Template:Mono/styles.css has no content.EADDRNOTAVAIL | Page Template:Mono/styles.css has no content.99 | Cannot assign requested address |
| Page Template:Mono/styles.css has no content.ENETDOWN | Page Template:Mono/styles.css has no content.100 | Network is down |
| Page Template:Mono/styles.css has no content.ENETUNREACH | Page Template:Mono/styles.css has no content.101 | Network is unreachable |
| Page Template:Mono/styles.css has no content.ENETRESET | Page Template:Mono/styles.css has no content.102 | Network dropped connection on reset |
| Page Template:Mono/styles.css has no content.ECONNABORTED | Page Template:Mono/styles.css has no content.103 | Software caused connection abort |
| Page Template:Mono/styles.css has no content.ECONNRESET | Page Template:Mono/styles.css has no content.104 | Connection reset by peer |
| Page Template:Mono/styles.css has no content.ENOBUFS | Page Template:Mono/styles.css has no content.105 | No buffer space available |
| Page Template:Mono/styles.css has no content.EISCONN | Page Template:Mono/styles.css has no content.106 | Transport endpoint is already connected |
| Page Template:Mono/styles.css has no content.ENOTCONN | Page Template:Mono/styles.css has no content.107 | Transport endpoint is not connected |
| Page Template:Mono/styles.css has no content.ESHUTDOWN | Page Template:Mono/styles.css has no content.108 | Cannot send after transport endpoint shutdown |
| Page Template:Mono/styles.css has no content.ETOOMANYREFS | Page Template:Mono/styles.css has no content.109 | Too many references: cannot splice |
| Page Template:Mono/styles.css has no content.ETIMEDOUT | Page Template:Mono/styles.css has no content.110 | Connection timed out |
| Page Template:Mono/styles.css has no content.ECONNREFUSED | Page Template:Mono/styles.css has no content.111 | Connection refused |
| Page Template:Mono/styles.css has no content.EHOSTDOWN | Page Template:Mono/styles.css has no content.112 | Host is down |
| Page Template:Mono/styles.css has no content.EHOSTUNREACH | Page Template:Mono/styles.css has no content.113 | No route to host |
| Page Template:Mono/styles.css has no content.EALREADY | Page Template:Mono/styles.css has no content.114 | Operation already in progress |
| Page Template:Mono/styles.css has no content.EINPROGRESS | Page Template:Mono/styles.css has no content.115 | Operation now in progress |
| Page Template:Mono/styles.css has no content.ESTALE | Page Template:Mono/styles.css has no content.116 | Stale file handle |
| Page Template:Mono/styles.css has no content.EUCLEAN | Page Template:Mono/styles.css has no content.117 | Structure needs cleaning |
| Page Template:Mono/styles.css has no content.ENOTNAM | Page Template:Mono/styles.css has no content.118 | Not a Xenix named type file |
| Page Template:Mono/styles.css has no content.ENAVAIL | Page Template:Mono/styles.css has no content.119 | No Xenix semaphores available |
| Page Template:Mono/styles.css has no content.EISNAM | Page Template:Mono/styles.css has no content.120 | Is a named type file |
| Page Template:Mono/styles.css has no content.EREMOTEIO | Page Template:Mono/styles.css has no content.121 | Remote I/O error |
| Page Template:Mono/styles.css has no content.EDQUOT | Page Template:Mono/styles.css has no content.122 | Disk quota exceeded |
| Page Template:Mono/styles.css has no content.ENOMEDIUM | Page Template:Mono/styles.css has no content.123 | No medium found |
| Page Template:Mono/styles.css has no content.EMEDIUMTYPE | Page Template:Mono/styles.css has no content.124 | Wrong medium type |
| Page Template:Mono/styles.css has no content.ECANCELED | Page Template:Mono/styles.css has no content.125 | Operation canceled |
| Page Template:Mono/styles.css has no content.ENOKEY | Page Template:Mono/styles.css has no content.126 | Required key not available |
| Page Template:Mono/styles.css has no content.EKEYEXPIRED | Page Template:Mono/styles.css has no content.127 | Key has expired |
| Page Template:Mono/styles.css has no content.EKEYREVOKED | Page Template:Mono/styles.css has no content.128 | Key has been revoked |
| Page Template:Mono/styles.css has no content.EKEYREJECTED | Page Template:Mono/styles.css has no content.129 | Key was rejected by service |
| Page Template:Mono/styles.css has no content.EOWNERDEAD | Page Template:Mono/styles.css has no content.130 | Owner died |
| Page Template:Mono/styles.css has no content.ENOTRECOVERABLE | Page Template:Mono/styles.css has no content.131 | State not recoverable |
| Page Template:Mono/styles.css has no content.ERFKILL | Page Template:Mono/styles.css has no content.132 | Operation not possible due to RF-kill |
| Page Template:Mono/styles.css has no content.EHWPOISON | Page Template:Mono/styles.css has no content.133 | Memory page has hardware error |
| Page Template:Mono/styles.css has no content.ENOTSUP | Page Template:Mono/styles.css has no content.134 | Not supported parameter or option |
| Page Template:Mono/styles.css has no content.ENOMEDIUM | Page Template:Mono/styles.css has no content.135 | Missing media |
| Page Template:Mono/styles.css has no content.EILSEQ | Page Template:Mono/styles.css has no content.138 | Invalid multibyte sequence |
| Page Template:Mono/styles.css has no content.EOVERFLOW | Page Template:Mono/styles.css has no content.139 | Value too large |
| Page Template:Mono/styles.css has no content.ECANCELED | Page Template:Mono/styles.css has no content.140 | Asynchronous operation stopped before normal completion |
| Page Template:Mono/styles.css has no content.ENOTRECOVERABLE | Page Template:Mono/styles.css has no content.141 | State not recoverable |
| Page Template:Mono/styles.css has no content.EOWNERDEAD | Page Template:Mono/styles.css has no content.142 | Previous owner died |
| Page Template:Mono/styles.css has no content.ESTRPIPE | Page Template:Mono/styles.css has no content.143 | Streams pipe error |
The macro names and meanings for error codes are defined in the POSIX Standards definition however the numeric values are NOT, though by convention the values appear to be the same across different versions of Unix.[citation needed] Programs should not rely on specific numeric values and should test code using the macro names specified in the ERRORS section of the man page of the associated function. For source code readability and portability the use of the standard macro names in code is highly recommended.[10][11]
See also
References
Page Template:Reflist/styles.css has no content.
- ^ International Standard for Programming Language C (C11), ISO/IEC 9899:2011, p. 205
- ^ a b International Standard for Programming Language C (C99), ISO/IEC 9899:1999, p. 186
- ^ Page Module:Citation/CS1/styles.css has no content."Checking for Errors". The GNU C Library (glibc). GNU Project. 2014-02-08. Retrieved 2014-06-25.
- ^ Page Module:Citation/CS1/styles.css has no content."A brief description of Normative Addendum 1". Retrieved 2013-09-12.
- ^ Template:Man
- ^ Page Module:Citation/CS1/styles.css has no content."Error numbers - cppreference.com". Retrieved 2015-05-08.
- ^ Page Module:Citation/CS1/styles.css has no content.McCabe, Colin. "The problem with strerror". www.club.cc.cmu.edu.
- ^ Page Module:Citation/CS1/styles.css has no content."Error Codes (The GNU C Library)". www.gnu.org. Mar 29, 2025. Retrieved Apr 5, 2025.
- ^ Page Module:Citation/CS1/styles.css has no content."Debugging: POSIX errors". particle.io. Retrieved Apr 5, 2025.
- ^ Page Module:Citation/CS1/styles.css has no content."Checking for Errors". gnu.org. Free Software Foundation. Jan 26, 2025. Retrieved Apr 6, 2025.
- ^ Page Module:Citation/CS1/styles.css has no content.Pappas, Brent; Gazzillo, Paul (2024). "Semantic Analysis of Macro Usage for Portability". Proceedings of the IEEE/ACM 46th International Conference on Software Engineering. pp. 1–12. arXiv:2401.10422. doi:10.1145/3597503.3623323. ISBN 979-8-4007-0217-4.
Bibliography
- Page Module:Citation/CS1/styles.css has no content.Stevens, W. Richard; Rago, Stephen A. (May 24, 2013). Advanced Programming in the UNIX Environment (Third ed.). Addison-Wesley Professional. ISBN 978-0321637734. Retrieved 27 February 2015.