Yolinux.com

errno manpage

Search topic Section
Get manual page for the search topic
List all commands matching the search topic
List all topics in the manpage index

ERRNO(3)		       Library functions		      ERRNO(3)



NAME
       errno - number of last error

SYNOPSIS
       #include <errno.h>

DESCRIPTION
       The  <errno.h> header file defines the integer variable errno, which is
       set by system calls and some library functions in the event of an error
       to  indicate  what  went wrong.	Its value is significant only when the
       call returned an error (usually -1), and a function that	 does  succeed
       is allowed to change errno.

       Sometimes,  when	 -1 is also a valid successful return value one has to
       zero errno before the call in order to detect possible errors.

       errno is defined by the ISO C standard to be  a	modifiable  lvalue  of
       type  int,  and	must not be explicitly declared; errno may be a macro.
       errno is thread-local; setting it in one thread	does  not  affect  its
       value in any other thread.

       Valid error numbers are all non-zero; errno is never set to zero by any
       library function.  All the error names specified by POSIX.1  must  have
       distinct	 values,  with	the exception of EAGAIN and EWOULDBLOCK, which
       may be the same.

       Below is a list of the symbolic error names that are defined on	Linux.
       Some  of	 these are marked POSIX.1, indicating that the name is defined
       by POSIX.1-2001, or C99, indicating that the name is defined by C99.

       E2BIG  Argument list too long (POSIX.1)

       EACCES Permission denied (POSIX.1)

       EADDRINUSE
	      Address already in use (POSIX.1)

       EADDRNOTAVAIL
	      Address not available (POSIX.1)

       EAFNOSUPPORT
	      Address family not supported (POSIX.1)

       EAGAIN Resource temporarily unavailable	(may  be  the  same  value  as
	      EWOULDBLOCK) (POSIX.1)

       EALREADY
	      Connection already in progress (POSIX.1)

       EBADE  Invalid exchange

       EBADF  Bad file descriptor (POSIX.1)

       EBADFD File descriptor in bad state

       EBADMSG
	      Bad message (POSIX.1)

       EBADR  Invalid request descriptor

       EBADRQC
	      Invalid request code

       EBADSLT
	      Invalid slot

       EBUSY  Device or resource busy (POSIX.1)

       ECANCELED
	      Operation canceled (POSIX.1)

       ECHILD No child processes (POSIX.1)

       ECHRNG Channel number out of range

       ECOMM  Communication error on send

       ECONNABORTED
	      Connection aborted (POSIX.1)

       ECONNREFUSED
	      Connection refused (POSIX.1)

       ECONNRESET
	      Connection reset (POSIX.1)

       EDEADLK
	      Resource deadlock avoided (POSIX.1)

       EDEADLOCK
	      Synonym for EDEADLK

       EDESTADDRREQ
	      Destination address required (POSIX.1)

       EDOM   Mathematics argument out of domain of function (POSIX.1, C99)

       EDQUOT Disk quota exceeded (POSIX.1)

       EEXIST File exists (POSIX.1)

       EFAULT Bad address (POSIX.1)

       EFBIG  File too large (POSIX.1)

       EHOSTDOWN
	      Host is down

       EHOSTUNREACH
	      Host is unreachable (POSIX.1)

       EIDRM  Identifier removed (POSIX.1)

       EILSEQ Illegal byte sequence (POSIX.1, C99)

       EINPROGRESS
	      Operation in progress (POSIX.1)

       EINTR  Interrupted function call (POSIX.1)

       EINVAL Invalid argument (POSIX.1)

       EIO    Input/output error (POSIX.1)

       EISCONN
	      Socket is connected (POSIX.1)

       EISDIR Is a directory (POSIX.1)

       EISNAM Is a named type file

       EKEYEXPIRED
	      Key has expired

       EKEYREJECTED
	      Key was rejected by service

       EKEYREVOKED
	      Key has been revoked

       EL2HLT Level 2 halted

       EL2NSYNC
	      Level 2 not synchronized

       EL3HLT Level 3 halted

       EL3RST Level 3 halted

       ELIBACC
	      Cannot access a needed shared library

       ELIBBAD
	      Accessing a corrupted shared library

       ELIBMAX
	      Attempting to link in too many shared libraries

       ELIBSCN
	      lib section in a.out corrupted

       ELIBEXEC
	      Cannot exec a shared library directly

       ELOOP  Too many levels of symbolic links (POSIX.1)

       EMEDIUMTYPE
	      Wrong medium type

       EMFILE Too many open files (POSIX.1)

       EMLINK Too many links (POSIX.1)

       EMSGSIZE
	      Message too long (POSIX.1)

       EMULTIHOP
	      Multihop attempted (POSIX.1)

       ENAMETOOLONG
	      Filename too long (POSIX.1)

       ENETDOWN
	      Network is down (POSIX.1)

       ENETRESET
	      Connection aborted by network (POSIX.1)

       ENETUNREACH
	      Network unreachable (POSIX.1)

       ENFILE Too many open files in system (POSIX.1)

       ENOBUFS
	      No buffer space available (POSIX.1 (XSI STREAMS option))

       ENODATA
	      No message is available on the STREAM head read queue (POSIX.1)

       ENODEV No such device (POSIX.1)

       ENOENT No such file or directory (POSIX.1)

       ENOEXEC
	      Exec format error (POSIX.1)

       ENOKEY Required key not available

       ENOLCK No locks available (POSIX.1)

       ENOLINK
	      Link has been severed (POSIX.1)

       ENOMEDIUM
	      No medium found

       ENOMEM Not enough space (POSIX.1)

       ENOMSG No message of the desired type (POSIX.1)

       ENONET Machine is not on the network

       ENOPKG Package not installed

       ENOPROTOOPT
	      Protocol not available (POSIX.1)

       ENOSPC No space left on device (POSIX.1)

       ENOSR  No STREAM resources (POSIX.1 (XSI STREAMS option))

       ENOSTR Not a STREAM (POSIX.1 (XSI STREAMS option))

       ENOSYS Function not implemented (POSIX.1)

       ENOTBLK
	      Block device required

       ENOTCONN
	      The socket is not connected (POSIX.1)

       ENOTDIR
	      Not a directory (POSIX.1)

       ENOTEMPTY
	      Directory not empty (POSIX.1)

       ENOTSOCK
	      Not a socket (POSIX.1)

       ENOTSUP
	      Operation not supported (POSIX.1)

       ENOTTY Inappropriate I/O control operation (POSIX.1)

       ENOTUNIQ
	      Name not unique on network

       ENXIO  No such device or address (POSIX.1)

       EOPNOTSUPP
	      Operation not supported on socket (POSIX.1)

	      (ENOTSUP	and  EOPNOTSUPP	 have  the  same  value	 on Linux, but
	      according to POSIX.1 these error values should be distinct.)

       EOVERFLOW
	      Value too large to be stored in data type (POSIX.1)

       EPERM  Operation not permitted (POSIX.1)

       EPFNOSUPPORT
	      Protocol family not supported

       EPIPE  Broken pipe (POSIX.1)

       EPROTO Protocol error (POSIX.1)

       EPROTONOSUPPORT
	      Protocol not supported (POSIX.1)

       EPROTOTYPE
	      Protocol wrong type for socket (POSIX.1)

       ERANGE Result too large (POSIX.1, C99)

       EREMCHG
	      Remote address changed

       EREMOTE
	      Object is remote

       EREMOTEIO
	      Remote I/O error

       ERESTART
	      Interrupted system call should be restarted

       EROFS  Read-only file system (POSIX.1)

       ESHUTDOWN
	      Cannot send after transport endpoint shutdown

       ESPIPE Invalid seek (POSIX.1)

       ESOCKTNOSUPPORT
	      Socket type not supported

       ESRCH  No such process (POSIX.1)

       ESTALE Stale file handle (POSIX.1))

	      This error can occur for NFS and for other file systems

       ESTRPIPE
	      Streams pipe error

       ETIME  Timer expired (POSIX.1 (XSI STREAMS option))

	      (POSIX.1 says "STREAM ioctl() timeout")

       ETIMEDOUT
	      Connection timed out (POSIX.1)

       ETXTBSY
	      Text file busy (POSIX.1)

       EUCLEAN
	      Structure needs cleaning

       EUNATCH
	      Protocol driver not attached

       EUSERS Too many users

       EWOULDBLOCK
	      Operation would block (may be same value as EAGAIN) (POSIX.1)

       EXDEV  Improper link (POSIX.1)

       EXFULL Exchange full

NOTES
       A common mistake is to do

	      if (somecall() == -1) {
		  printf("somecall() failed\n");
		  if (errno == ...) { ... }
	      }

       where errno no longer needs to have the value it had upon  return  from
       somecall()  (i.e.,  it  may have been changed by the printf()).	If the
       value of errno should be preserved across a library call,  it  must  be
       saved:

	      if (somecall() == -1) {
		  int errsv = errno;
		  printf("somecall() failed\n");
		  if (errsv == ...) { ... }
	      }

       It  was common in traditional C to declare errno manually (i.e., extern
       int errno) instead of including <errno.h>.  Do not do  this.   It  will
       not work with modern versions of the C library.	However, on (very) old
       Unix systems, there may be no <errno.h> and the declaration is  needed.

SEE ALSO
       err(3), error(3), perror(3), strerror(3)



				  2006-02-09			      ERRNO(3)
YoLinux.com Home Page
YoLinux Tutorial Index
Privacy Policy | Advertise with us | Feedback Form |
Unauthorized copying or redistribution prohibited.
    Bookmark and Share