- NAME
-
errno - number of last error
- SYNOPSIS
#include <errno.h>
extern int errno;
- DESCRIPTION
-
The integer errno is set by system calls (and some library functions) to indicate what went wrong. Its value is significant only when the call returned an error (usually -1), and a library function that does succeed is allowed to change errno.
Sometimes, when -1 is also a legal 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.
POSIX.1 (1996 edition) lists the following symbolic error names. Of these, EDOM and ERANGE are in the ISO C standard. ISO C Amendment 1 defines the additional error number EILSEQ for coding errors in multi- byte or wide characters.
E2BIG - Arg list too long EACCES - Permission denied EAGAIN - Resource temporarily unavailable EBADF - Bad file descriptor EBADMSG - Bad message EBUSY - Resource busy ECANCELED - Operation canceled ECHILD - No child processes EDEADLK - Resource deadlock avoided EDOM - Domain error EEXIST - File exists EFAULT - Bad address EFBIG - File too large EINPROGRESS - Operation in progress EINTR - Interrupted function call EINVAL - Invalid argument EIO - Input/output error EISDIR - Is a directory EMFILE - Too many open files EMLINK - Too many links EMSGSIZE - Inappropriate message buffer length ENAMETOOLONG - Filename too long ENFILE - Too many open files in system ENODEV - No such device ENOENT - No such file or directory ENOEXEC - Exec format error ENOLCK - No locks available ENOMEM - Not enough space ENOSPC - No space left on device ENOSYS - Function not implemented ENOTDIR - Not a directory ENOTEMPTY - Directory not empty ENOTSUP - Not supported ENOTTY - Inappropriate I/O control operation ENXIO - No such device or address EPERM - Operation not permitted EPIPE - Broken pipe ERANGE - Result too large EROFS - Read-only file system ESPIPE - Invalid seek ESRCH - No such process ETIMEDOUT - Operation timed out EXDEV - Improper link
- SEE ALSO
-
perror, strerror
- EXAMPLE
link:src/errno.c[role=include]
- OUTPUT
$ gcc -Wall errno.c $ ./a.out Error # 0: Success Error # 1: Operation not permitted Error # 2: No such file or directory Error # 3: No such process Error # 4: Interrupted system call Error # 5: Input/output error Error # 6: No such device or address Error # 7: Argument list too long Error # 8: Exec format error Error # 9: Bad file descriptor Error # 10: No child processes Error # 11: Resource temporarily unavailable ...