Errno.h

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description Template:C Standard Library Template:Lowercase <templatestyles src="Mono/styles.css" /><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 <templatestyles src="Mono/styles.css" />NULL for functions that return pointers, and <templatestyles src="Mono/styles.css" />-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]

<templatestyles src="Mono/styles.css" />EDOM A parameter was outside a function's domain, e.g. sqrt(-1)
<templatestyles src="Mono/styles.css" />ERANGE A result outside a function's range, e.g. strtol("0xfffffffff", NULL, 0) on systems with a 32-bit wide long
<templatestyles src="Mono/styles.css" />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).Template:Sfn

An errno can be translated to a descriptive string using <templatestyles src="Mono/styles.css" />strerror (defined in <templatestyles src="Mono/styles.css" /><string.h>) or a BSD extension called sys_errlist. The translation can be printed directly to the standard error stream using <templatestyles src="Mono/styles.css" />perror (defined in <templatestyles src="Mono/styles.css" /><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 <templatestyles src="Mono/styles.css" /><errno.h>.[8] These are the descriptions of the macros provided by <templatestyles src="Mono/styles.css" />strerror.

Symbol Value[9] Description
<templatestyles src="Mono/styles.css" />EPERM <templatestyles src="Mono/styles.css" />1 Operation not permitted
<templatestyles src="Mono/styles.css" />ENOENT <templatestyles src="Mono/styles.css" />2 No such file or directory
<templatestyles src="Mono/styles.css" />ESRCH <templatestyles src="Mono/styles.css" />3 No such process
<templatestyles src="Mono/styles.css" />EINTR <templatestyles src="Mono/styles.css" />4 Interrupted system call
<templatestyles src="Mono/styles.css" />EIO <templatestyles src="Mono/styles.css" />5 Input/output error
<templatestyles src="Mono/styles.css" />ENXIO <templatestyles src="Mono/styles.css" />6 No such device or address
<templatestyles src="Mono/styles.css" />E2BIG <templatestyles src="Mono/styles.css" />7 Argument list too long
<templatestyles src="Mono/styles.css" />ENOEXEC <templatestyles src="Mono/styles.css" />8 Exec format error
<templatestyles src="Mono/styles.css" />EBADF <templatestyles src="Mono/styles.css" />9 Bad file descriptor
<templatestyles src="Mono/styles.css" />ECHILD <templatestyles src="Mono/styles.css" />10 No child processes
<templatestyles src="Mono/styles.css" />EAGAIN <templatestyles src="Mono/styles.css" />11 Resource temporarily unavailable
<templatestyles src="Mono/styles.css" />ENOMEM <templatestyles src="Mono/styles.css" />12 Cannot allocate memory
<templatestyles src="Mono/styles.css" />EACCES <templatestyles src="Mono/styles.css" />13 Permission denied
<templatestyles src="Mono/styles.css" />EFAULT <templatestyles src="Mono/styles.css" />14 Bad address
<templatestyles src="Mono/styles.css" />ENOTBLK <templatestyles src="Mono/styles.css" />15 Block device required
<templatestyles src="Mono/styles.css" />EBUSY <templatestyles src="Mono/styles.css" />16 Device or resource busy
<templatestyles src="Mono/styles.css" />EEXIST <templatestyles src="Mono/styles.css" />17 File exists
<templatestyles src="Mono/styles.css" />EXDEV <templatestyles src="Mono/styles.css" />18 Invalid cross-device link
<templatestyles src="Mono/styles.css" />ENODEV <templatestyles src="Mono/styles.css" />19 No such device
<templatestyles src="Mono/styles.css" />ENOTDIR <templatestyles src="Mono/styles.css" />20 Not a directory
<templatestyles src="Mono/styles.css" />EISDIR <templatestyles src="Mono/styles.css" />21 Is a directory
<templatestyles src="Mono/styles.css" />EINVAL <templatestyles src="Mono/styles.css" />22 Invalid argument
<templatestyles src="Mono/styles.css" />ENFILE <templatestyles src="Mono/styles.css" />23 Too many open files in system
<templatestyles src="Mono/styles.css" />EMFILE <templatestyles src="Mono/styles.css" />24 Too many open files
<templatestyles src="Mono/styles.css" />ENOTTY <templatestyles src="Mono/styles.css" />25 Inappropriate ioctl for device
<templatestyles src="Mono/styles.css" />ETXTBSY <templatestyles src="Mono/styles.css" />26 Text file busy
<templatestyles src="Mono/styles.css" />EFBIG <templatestyles src="Mono/styles.css" />27 File too large
<templatestyles src="Mono/styles.css" />ENOSPC <templatestyles src="Mono/styles.css" />28 No space left on device
<templatestyles src="Mono/styles.css" />ESPIPE <templatestyles src="Mono/styles.css" />29 Illegal seek
<templatestyles src="Mono/styles.css" />EROFS <templatestyles src="Mono/styles.css" />30 Read-only file system
<templatestyles src="Mono/styles.css" />EMLINK <templatestyles src="Mono/styles.css" />31 Too many links
<templatestyles src="Mono/styles.css" />EPIPE <templatestyles src="Mono/styles.css" />32 Broken pipe
<templatestyles src="Mono/styles.css" />EDOM <templatestyles src="Mono/styles.css" />33 Numerical argument out of domain
<templatestyles src="Mono/styles.css" />ERANGE <templatestyles src="Mono/styles.css" />34 Numerical result out of range
<templatestyles src="Mono/styles.css" />EDEADLK <templatestyles src="Mono/styles.css" />35 Resource deadlock avoided
<templatestyles src="Mono/styles.css" />ENAMETOOLONG <templatestyles src="Mono/styles.css" />36 File name too long
<templatestyles src="Mono/styles.css" />ENOLCK <templatestyles src="Mono/styles.css" />37 No locks available
<templatestyles src="Mono/styles.css" />ENOSYS <templatestyles src="Mono/styles.css" />38 Function not implemented
<templatestyles src="Mono/styles.css" />ENOTEMPTY <templatestyles src="Mono/styles.css" />39 Directory not empty
<templatestyles src="Mono/styles.css" />ELOOP <templatestyles src="Mono/styles.css" />40 Too many levels of symbolic links
<templatestyles src="Mono/styles.css" />ENOMSG <templatestyles src="Mono/styles.css" />42 No message of desired type
<templatestyles src="Mono/styles.css" />EIDRM <templatestyles src="Mono/styles.css" />43 Identifier removed
<templatestyles src="Mono/styles.css" />ECHRNG <templatestyles src="Mono/styles.css" />44 Channel number out of range
<templatestyles src="Mono/styles.css" />EL2NSYNC <templatestyles src="Mono/styles.css" />45 Level 2 not synchronized
<templatestyles src="Mono/styles.css" />EL3HLT <templatestyles src="Mono/styles.css" />46 Level 3 halted
<templatestyles src="Mono/styles.css" />EL3RST <templatestyles src="Mono/styles.css" />47 Level 3 reset
<templatestyles src="Mono/styles.css" />ELNRNG <templatestyles src="Mono/styles.css" />48 Link number out of range
<templatestyles src="Mono/styles.css" />EUNATCH <templatestyles src="Mono/styles.css" />49 Protocol driver not attached
<templatestyles src="Mono/styles.css" />ENOCSI <templatestyles src="Mono/styles.css" />50 No CSI structure available
<templatestyles src="Mono/styles.css" />EL2HLT <templatestyles src="Mono/styles.css" />51 Level 2 halted
<templatestyles src="Mono/styles.css" />EBADE <templatestyles src="Mono/styles.css" />52 Invalid exchange
<templatestyles src="Mono/styles.css" />EBADR <templatestyles src="Mono/styles.css" />53 Invalid request descriptor
<templatestyles src="Mono/styles.css" />EXFULL <templatestyles src="Mono/styles.css" />54 Exchange full
<templatestyles src="Mono/styles.css" />ENOANO <templatestyles src="Mono/styles.css" />55 No anode
<templatestyles src="Mono/styles.css" />EBADRQC <templatestyles src="Mono/styles.css" />56 Invalid request code
<templatestyles src="Mono/styles.css" />EBADSLT <templatestyles src="Mono/styles.css" />57 Invalid slot
<templatestyles src="Mono/styles.css" />EBFONT <templatestyles src="Mono/styles.css" />59 Bad font file format
<templatestyles src="Mono/styles.css" />ENOSTR <templatestyles src="Mono/styles.css" />60 Device not a stream
<templatestyles src="Mono/styles.css" />ENODATA <templatestyles src="Mono/styles.css" />61 No data available
<templatestyles src="Mono/styles.css" />ETIME <templatestyles src="Mono/styles.css" />62 Timer expired
<templatestyles src="Mono/styles.css" />ENOSR <templatestyles src="Mono/styles.css" />63 Out of streams resources
<templatestyles src="Mono/styles.css" />ENONET <templatestyles src="Mono/styles.css" />64 Machine is not on the network
<templatestyles src="Mono/styles.css" />ENOPKG <templatestyles src="Mono/styles.css" />65 Package not installed
<templatestyles src="Mono/styles.css" />EREMOTE <templatestyles src="Mono/styles.css" />66 Object is remote
<templatestyles src="Mono/styles.css" />ENOLINK <templatestyles src="Mono/styles.css" />67 Link has been severed
<templatestyles src="Mono/styles.css" />EADV <templatestyles src="Mono/styles.css" />68 Advertise error
<templatestyles src="Mono/styles.css" />ESRMNT <templatestyles src="Mono/styles.css" />69 Srmount error
<templatestyles src="Mono/styles.css" />ECOMM <templatestyles src="Mono/styles.css" />70 Communication error on send
<templatestyles src="Mono/styles.css" />EPROTO <templatestyles src="Mono/styles.css" />71 Protocol error
<templatestyles src="Mono/styles.css" />EMULTIHOP <templatestyles src="Mono/styles.css" />72 Multihop attempted
<templatestyles src="Mono/styles.css" />EDOTDOT <templatestyles src="Mono/styles.css" />73 RFS specific error
<templatestyles src="Mono/styles.css" />EBADMSG <templatestyles src="Mono/styles.css" />74 Bad message
<templatestyles src="Mono/styles.css" />EOVERFLOW <templatestyles src="Mono/styles.css" />75 Value too large for defined data type
<templatestyles src="Mono/styles.css" />ENOTUNIQ <templatestyles src="Mono/styles.css" />76 Name not unique on network
<templatestyles src="Mono/styles.css" />EBADFD <templatestyles src="Mono/styles.css" />77 File descriptor in bad state
<templatestyles src="Mono/styles.css" />EREMCHG <templatestyles src="Mono/styles.css" />78 Remote address changed
<templatestyles src="Mono/styles.css" />ELIBACC <templatestyles src="Mono/styles.css" />79 Can not access a needed shared library
<templatestyles src="Mono/styles.css" />ELIBBAD <templatestyles src="Mono/styles.css" />80 Accessing a corrupted shared library
<templatestyles src="Mono/styles.css" />ELIBSCN <templatestyles src="Mono/styles.css" />81 <templatestyles src="Mono/styles.css" />.lib section in <templatestyles src="Mono/styles.css" />a.out corrupted
<templatestyles src="Mono/styles.css" />ELIBMAX <templatestyles src="Mono/styles.css" />82 Attempting to link in too many shared libraries
<templatestyles src="Mono/styles.css" />ELIBEXEC <templatestyles src="Mono/styles.css" />83 Cannot exec a shared library directly
<templatestyles src="Mono/styles.css" />EILSEQ <templatestyles src="Mono/styles.css" />84 Invalid or incomplete multibyte or wide character
<templatestyles src="Mono/styles.css" />ERESTART <templatestyles src="Mono/styles.css" />85 Interrupted system call should be restarted
<templatestyles src="Mono/styles.css" />ESTRPIPE <templatestyles src="Mono/styles.css" />86 Streams pipe error
<templatestyles src="Mono/styles.css" />EUSERS <templatestyles src="Mono/styles.css" />87 Too many users
<templatestyles src="Mono/styles.css" />ENOTSOCK <templatestyles src="Mono/styles.css" />88 Socket operation on non-socket
<templatestyles src="Mono/styles.css" />EDESTADDRREQ <templatestyles src="Mono/styles.css" />89 Destination address required
<templatestyles src="Mono/styles.css" />EMSGSIZE <templatestyles src="Mono/styles.css" />90 Message too long
<templatestyles src="Mono/styles.css" />EPROTOTYPE <templatestyles src="Mono/styles.css" />91 Protocol wrong type for socket
<templatestyles src="Mono/styles.css" />ENOPROTOOPT <templatestyles src="Mono/styles.css" />92 Protocol not available
<templatestyles src="Mono/styles.css" />EPROTONOSUPPORT <templatestyles src="Mono/styles.css" />93 Protocol not supported
<templatestyles src="Mono/styles.css" />ESOCKTNOSUPPORT <templatestyles src="Mono/styles.css" />94 Socket type not supported
<templatestyles src="Mono/styles.css" />EOPNOTSUPP <templatestyles src="Mono/styles.css" />95 Operation not supported
<templatestyles src="Mono/styles.css" />EPFNOSUPPORT <templatestyles src="Mono/styles.css" />96 Protocol family not supported
<templatestyles src="Mono/styles.css" />EAFNOSUPPORT <templatestyles src="Mono/styles.css" />97 Address family not supported by protocol
<templatestyles src="Mono/styles.css" />EADDRINUSE <templatestyles src="Mono/styles.css" />98 Address already in use
<templatestyles src="Mono/styles.css" />EADDRNOTAVAIL <templatestyles src="Mono/styles.css" />99 Cannot assign requested address
<templatestyles src="Mono/styles.css" />ENETDOWN <templatestyles src="Mono/styles.css" />100 Network is down
<templatestyles src="Mono/styles.css" />ENETUNREACH <templatestyles src="Mono/styles.css" />101 Network is unreachable
<templatestyles src="Mono/styles.css" />ENETRESET <templatestyles src="Mono/styles.css" />102 Network dropped connection on reset
<templatestyles src="Mono/styles.css" />ECONNABORTED <templatestyles src="Mono/styles.css" />103 Software caused connection abort
<templatestyles src="Mono/styles.css" />ECONNRESET <templatestyles src="Mono/styles.css" />104 Connection reset by peer
<templatestyles src="Mono/styles.css" />ENOBUFS <templatestyles src="Mono/styles.css" />105 No buffer space available
<templatestyles src="Mono/styles.css" />EISCONN <templatestyles src="Mono/styles.css" />106 Transport endpoint is already connected
<templatestyles src="Mono/styles.css" />ENOTCONN <templatestyles src="Mono/styles.css" />107 Transport endpoint is not connected
<templatestyles src="Mono/styles.css" />ESHUTDOWN <templatestyles src="Mono/styles.css" />108 Cannot send after transport endpoint shutdown
<templatestyles src="Mono/styles.css" />ETOOMANYREFS <templatestyles src="Mono/styles.css" />109 Too many references: cannot splice
<templatestyles src="Mono/styles.css" />ETIMEDOUT <templatestyles src="Mono/styles.css" />110 Connection timed out
<templatestyles src="Mono/styles.css" />ECONNREFUSED <templatestyles src="Mono/styles.css" />111 Connection refused
<templatestyles src="Mono/styles.css" />EHOSTDOWN <templatestyles src="Mono/styles.css" />112 Host is down
<templatestyles src="Mono/styles.css" />EHOSTUNREACH <templatestyles src="Mono/styles.css" />113 No route to host
<templatestyles src="Mono/styles.css" />EALREADY <templatestyles src="Mono/styles.css" />114 Operation already in progress
<templatestyles src="Mono/styles.css" />EINPROGRESS <templatestyles src="Mono/styles.css" />115 Operation now in progress
<templatestyles src="Mono/styles.css" />ESTALE <templatestyles src="Mono/styles.css" />116 Stale file handle
<templatestyles src="Mono/styles.css" />EUCLEAN <templatestyles src="Mono/styles.css" />117 Structure needs cleaning
<templatestyles src="Mono/styles.css" />ENOTNAM <templatestyles src="Mono/styles.css" />118 Not a Xenix named type file
<templatestyles src="Mono/styles.css" />ENAVAIL <templatestyles src="Mono/styles.css" />119 No Xenix semaphores available
<templatestyles src="Mono/styles.css" />EISNAM <templatestyles src="Mono/styles.css" />120 Is a named type file
<templatestyles src="Mono/styles.css" />EREMOTEIO <templatestyles src="Mono/styles.css" />121 Remote I/O error
<templatestyles src="Mono/styles.css" />EDQUOT <templatestyles src="Mono/styles.css" />122 Disk quota exceeded
<templatestyles src="Mono/styles.css" />ENOMEDIUM <templatestyles src="Mono/styles.css" />123 No medium found
<templatestyles src="Mono/styles.css" />EMEDIUMTYPE <templatestyles src="Mono/styles.css" />124 Wrong medium type
<templatestyles src="Mono/styles.css" />ECANCELED <templatestyles src="Mono/styles.css" />125 Operation canceled
<templatestyles src="Mono/styles.css" />ENOKEY <templatestyles src="Mono/styles.css" />126 Required key not available
<templatestyles src="Mono/styles.css" />EKEYEXPIRED <templatestyles src="Mono/styles.css" />127 Key has expired
<templatestyles src="Mono/styles.css" />EKEYREVOKED <templatestyles src="Mono/styles.css" />128 Key has been revoked
<templatestyles src="Mono/styles.css" />EKEYREJECTED <templatestyles src="Mono/styles.css" />129 Key was rejected by service
<templatestyles src="Mono/styles.css" />EOWNERDEAD <templatestyles src="Mono/styles.css" />130 Owner died
<templatestyles src="Mono/styles.css" />ENOTRECOVERABLE <templatestyles src="Mono/styles.css" />131 State not recoverable
<templatestyles src="Mono/styles.css" />ERFKILL <templatestyles src="Mono/styles.css" />132 Operation not possible due to RF-kill
<templatestyles src="Mono/styles.css" />EHWPOISON <templatestyles src="Mono/styles.css" />133 Memory page has hardware error
<templatestyles src="Mono/styles.css" />ENOTSUP <templatestyles src="Mono/styles.css" />134 Not supported parameter or option
<templatestyles src="Mono/styles.css" />ENOMEDIUM <templatestyles src="Mono/styles.css" />135 Missing media
<templatestyles src="Mono/styles.css" />EILSEQ <templatestyles src="Mono/styles.css" />138 Invalid multibyte sequence
<templatestyles src="Mono/styles.css" />EOVERFLOW <templatestyles src="Mono/styles.css" />139 Value too large
<templatestyles src="Mono/styles.css" />ECANCELED <templatestyles src="Mono/styles.css" />140 Asynchronous operation stopped before normal completion
<templatestyles src="Mono/styles.css" />ENOTRECOVERABLE <templatestyles src="Mono/styles.css" />141 State not recoverable
<templatestyles src="Mono/styles.css" />EOWNERDEAD <templatestyles src="Mono/styles.css" />142 Previous owner died
<templatestyles src="Mono/styles.css" />ESTRPIPE <templatestyles src="Mono/styles.css" />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.Script error: No such module "Unsubst". 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

<templatestyles src="Reflist/styles.css" />

  1. International Standard for Programming Language C (C11), ISO/IEC 9899:2011, p. 205
  2. a b International Standard for Programming Language C (C99), ISO/IEC 9899:1999, p. 186
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. errno.h: system error numbers – Base Definitions Reference, The Single UNIX Specification, Version 5 from The Open Group
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

Bibliography

  • Script error: No such module "citation/CS1".

External links