Errno.h

From Wikipedia, the free encyclopedia
(Redirected from ENOBUFS)
Jump to navigation Jump to search

Template:Short description Template:C Standard Library Template:Lowercase Template:Mono 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 [[Null pointer|Template:Mono]] for functions that return pointers, and Template:Mono 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]

Template:Mono A parameter was outside a function's domain, e.g. sqrt(-1)
Template:Mono A result outside a function's range, e.g. strtol("0xfffffffff", NULL, 0) on systems with a 32-bit wide long
Template:Mono (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 Template:Mono (defined in [[string.h|Template:Mono]]) or a BSD extension called sys_errlist. The translation can be printed directly to the standard error stream using Template:Mono (defined in [[stdio.h|Template:Mono]]). 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 Template:Mono.[8] These are the descriptions of the macros provided by Template:Mono.

Symbol Value[9] Description
Template:Mono Template:Mono Operation not permitted
Template:Mono Template:Mono No such file or directory
Template:Mono Template:Mono No such process
Template:Mono Template:Mono Interrupted system call
Template:Mono Template:Mono Input/output error
Template:Mono Template:Mono No such device or address
Template:Mono Template:Mono Argument list too long
Template:Mono Template:Mono Exec format error
Template:Mono Template:Mono Bad file descriptor
Template:Mono Template:Mono No child processes
Template:Mono Template:Mono Resource temporarily unavailable
Template:Mono Template:Mono Cannot allocate memory
Template:Mono Template:Mono Permission denied
Template:Mono Template:Mono Bad address
Template:Mono Template:Mono Block device required
Template:Mono Template:Mono Device or resource busy
Template:Mono Template:Mono File exists
Template:Mono Template:Mono Invalid cross-device link
Template:Mono Template:Mono No such device
Template:Mono Template:Mono Not a directory
Template:Mono Template:Mono Is a directory
Template:Mono Template:Mono Invalid argument
Template:Mono Template:Mono Too many open files in system
Template:Mono Template:Mono Too many open files
Template:Mono Template:Mono Inappropriate ioctl for device
Template:Mono Template:Mono Text file busy
Template:Mono Template:Mono File too large
Template:Mono Template:Mono No space left on device
Template:Mono Template:Mono Illegal seek
Template:Mono Template:Mono Read-only file system
Template:Mono Template:Mono Too many links
Template:Mono Template:Mono Broken pipe
Template:Mono Template:Mono Numerical argument out of domain
Template:Mono Template:Mono Numerical result out of range
Template:Mono Template:Mono Resource deadlock avoided
Template:Mono Template:Mono File name too long
Template:Mono Template:Mono No locks available
Template:Mono Template:Mono Function not implemented
Template:Mono Template:Mono Directory not empty
Template:Mono Template:Mono Too many levels of symbolic links
Template:Mono Template:Mono No message of desired type
Template:Mono Template:Mono Identifier removed
Template:Mono Template:Mono Channel number out of range
Template:Mono Template:Mono Level 2 not synchronized
Template:Mono Template:Mono Level 3 halted
Template:Mono Template:Mono Level 3 reset
Template:Mono Template:Mono Link number out of range
Template:Mono Template:Mono Protocol driver not attached
Template:Mono Template:Mono No CSI structure available
Template:Mono Template:Mono Level 2 halted
Template:Mono Template:Mono Invalid exchange
Template:Mono Template:Mono Invalid request descriptor
Template:Mono Template:Mono Exchange full
Template:Mono Template:Mono No anode
Template:Mono Template:Mono Invalid request code
Template:Mono Template:Mono Invalid slot
Template:Mono Template:Mono Bad font file format
Template:Mono Template:Mono Device not a stream
Template:Mono Template:Mono No data available
Template:Mono Template:Mono Timer expired
Template:Mono Template:Mono Out of streams resources
Template:Mono Template:Mono Machine is not on the network
Template:Mono Template:Mono Package not installed
Template:Mono Template:Mono Object is remote
Template:Mono Template:Mono Link has been severed
Template:Mono Template:Mono Advertise error
Template:Mono Template:Mono Srmount error
Template:Mono Template:Mono Communication error on send
Template:Mono Template:Mono Protocol error
Template:Mono Template:Mono Multihop attempted
Template:Mono Template:Mono RFS specific error
Template:Mono Template:Mono Bad message
Template:Mono Template:Mono Value too large for defined data type
Template:Mono Template:Mono Name not unique on network
Template:Mono Template:Mono File descriptor in bad state
Template:Mono Template:Mono Remote address changed
Template:Mono Template:Mono Can not access a needed shared library
Template:Mono Template:Mono Accessing a corrupted shared library
Template:Mono Template:Mono Template:Mono section in Template:Mono corrupted
Template:Mono Template:Mono Attempting to link in too many shared libraries
Template:Mono Template:Mono Cannot exec a shared library directly
Template:Mono Template:Mono Invalid or incomplete multibyte or wide character
Template:Mono Template:Mono Interrupted system call should be restarted
Template:Mono Template:Mono Streams pipe error
Template:Mono Template:Mono Too many users
Template:Mono Template:Mono Socket operation on non-socket
Template:Mono Template:Mono Destination address required
Template:Mono Template:Mono Message too long
Template:Mono Template:Mono Protocol wrong type for socket
Template:Mono Template:Mono Protocol not available
Template:Mono Template:Mono Protocol not supported
Template:Mono Template:Mono Socket type not supported
Template:Mono Template:Mono Operation not supported
Template:Mono Template:Mono Protocol family not supported
Template:Mono Template:Mono Address family not supported by protocol
Template:Mono Template:Mono Address already in use
Template:Mono Template:Mono Cannot assign requested address
Template:Mono Template:Mono Network is down
Template:Mono Template:Mono Network is unreachable
Template:Mono Template:Mono Network dropped connection on reset
Template:Mono Template:Mono Software caused connection abort
Template:Mono Template:Mono Connection reset by peer
Template:Mono Template:Mono No buffer space available
Template:Mono Template:Mono Transport endpoint is already connected
Template:Mono Template:Mono Transport endpoint is not connected
Template:Mono Template:Mono Cannot send after transport endpoint shutdown
Template:Mono Template:Mono Too many references: cannot splice
Template:Mono Template:Mono Connection timed out
Template:Mono Template:Mono Connection refused
Template:Mono Template:Mono Host is down
Template:Mono Template:Mono No route to host
Template:Mono Template:Mono Operation already in progress
Template:Mono Template:Mono Operation now in progress
Template:Mono Template:Mono Stale file handle
Template:Mono Template:Mono Structure needs cleaning
Template:Mono Template:Mono Not a Xenix named type file
Template:Mono Template:Mono No Xenix semaphores available
Template:Mono Template:Mono Is a named type file
Template:Mono Template:Mono Remote I/O error
Template:Mono Template:Mono Disk quota exceeded
Template:Mono Template:Mono No medium found
Template:Mono Template:Mono Wrong medium type
Template:Mono Template:Mono Operation canceled
Template:Mono Template:Mono Required key not available
Template:Mono Template:Mono Key has expired
Template:Mono Template:Mono Key has been revoked
Template:Mono Template:Mono Key was rejected by service
Template:Mono Template:Mono Owner died
Template:Mono Template:Mono State not recoverable
Template:Mono Template:Mono Operation not possible due to RF-kill
Template:Mono Template:Mono Memory page has hardware error
Template:Mono Template:Mono Not supported parameter or option
Template:Mono Template:Mono Missing media
Template:Mono Template:Mono Invalid multibyte sequence
Template:Mono Template:Mono Value too large
Template:Mono Template:Mono Asynchronous operation stopped before normal completion
Template:Mono Template:Mono State not recoverable
Template:Mono Template:Mono Previous owner died
Template:Mono Template:Mono 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