ERRNO

NAME
SYNOPSIS
DESCRIPTION
SEE ALSO

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

Many other error numbers are returned by various Unix implementations. System V returns ETXTBSY (Text file busy) if one tries to exec() a file that is currently open for writing. Linux also returns this error if one tries to have a file both memory mapped with VM_DENYWRITE and open for writing.

SEE ALSO

perror(3), strerror(3)