Skip to content

Latest commit

 

History

History
115 lines (97 loc) · 3.07 KB

040_errno.asciidoc

File metadata and controls

115 lines (97 loc) · 3.07 KB

errno

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
...