Share via

errno constants


#include <errno.h>


The errno constants are values assigned to errno for various error conditions.

ERRNO.H contains the definitions of the errno values. However, not all the definitions given in ERRNO.H are used in 32-bit Windows operating systems. Some of the values in ERRNO.H are present to maintain compatibility with the UNIX family of operating systems. The errno values in a 32-bit Windows operating system are a subset of the values for errno in UNIX systems.

The errno value isn't necessarily the same as the actual error code returned by a system call from the Windows operating system. To access the actual operating system error code, use the _doserrno variable, which contains this value.

The following errno values are supported:

Constant Description Value
E2BIG Argument list too long. 7
EACCES Permission denied. The file's permission setting doesn't allow the specified access. An attempt was made to access a file (or, in some cases, a directory) in a way that's incompatible with the file's attributes.

For example, the error can occur when an attempt is made to read from a file that isn't open. Or, on an attempt to open an existing read-only file for writing, or to open a directory instead of a file. Under MS-DOS operating system versions 3.0 and later, EACCES may also indicate a locking or sharing violation.

The error can also occur in an attempt to rename a file or directory or to remove an existing directory.
EAGAIN No more processes or not enough memory or maximum nesting level reached. An attempt to create a new process failed because there are no more process slots, or there isn't enough memory, or the maximum nesting level has been reached. 11
EBADF Bad file number. There are two possible causes: 1) The specified file descriptor isn't a valid value or doesn't refer to an open file. 2) An attempt was made to write to a file or device opened for read-only access. 9
EBUSY Device or resource busy. 16
ECHILD No spawned processes. 10
EDEADLK Resource deadlock would occur. 36
EDEADLOCK Same as EDEADLK for compatibility with older Microsoft C versions. 36
EDOM Math argument. The argument to a math function isn't in the domain of the function. 33
EEXIST Files exists. An attempt has been made to create a file that already exists. For example, the _O_CREAT and _O_EXCL flags are specified in an _open call, but the named file already exists. 17
EFAULT Bad address. 14
EFBIG File too large. 27
EILSEQ Illegal sequence of bytes (for example, in an MBCS string). 42
EINTR Interrupted function. 4
EINVAL Invalid argument. An invalid value was given for one of the arguments to a function. For example, the value given for the origin when positioning a file pointer (by a call to fseek) is before the beginning of the file. 22
EIO I/O error. 5
EISDIR Is a directory. 21
EMFILE Too many open files. No more file descriptors are available, so no more files can be opened. 24
EMLINK Too many links. 31
ENAMETOOLONG Filename too long. 38
ENFILE Too many files open in system. 23
ENODEV No such device. 19
ENOENT No such file or directory. The specified file or directory doesn't exist or can't be found. This message can occur whenever a specified file doesn't exist or a component of a path doesn't specify an existing directory. 2
ENOEXEC Exec format error. An attempt was made to execute a file that isn't executable or that has an invalid executable-file format. 8
ENOLCK No locks available. 39
ENOMEM Not enough memory is available for the attempted operator. For example, this message can occur when insufficient memory is available to execute a child process, or when the allocation request in a _getcwd call can't be satisfied. 12
ENOSPC No space left on device. No more space for writing is available on the device (for example, when the disk is full). 28
ENOSYS Function not supported. 40
ENOTDIR Not a directory. 20
ENOTEMPTY Directory not empty. 41
ENOTTY Inappropriate I/O control operation. 25
ENXIO No such device or address. 6
EPERM Operation not permitted. 1
EPIPE Broken pipe. 32
ERANGE Result too large. An argument to a math function is too large, resulting in partial or total loss of significance in the result. This error can also occur in other functions when an argument is larger than expected (for example, when the buffer argument to _getcwd is longer than expected). 34
EROFS Read only file system. 30
ESPIPE Invalid seek. 29
ESRCH No such process. 3
EXDEV Cross-device link. An attempt was made to move a file to a different device (using the rename function). 18
STRUNCATE A string copy or concatenation resulted in a truncated string. See _TRUNCATE. 80

The following values are supported for compatibility with POSIX:

Constant Description Value
EADDRINUSE Address in use. 100
EADDRNOTAVAIL Address not available. 101
EAFNOSUPPORT Address family not supported. 102
EALREADY Connection already in progress. 103
EBADMSG Bad message. 104
ECANCELED Operation canceled. 105
ECONNABORTED Connection aborted. 106
ECONNREFUSED Connection refused. 107
ECONNRESET Connection reset. 108
EDESTADDRREQ Destination address required. 109
EHOSTUNREACH Host unreachable. 110
EIDRM Identifier removed. 111
EINPROGRESS Operation in progress. 112
EISCONN Already connected. 113
ELOOP Too many symbolic link levels. 114
EMSGSIZE Message size. 115
ENETDOWN Network down. 116
ENETRESET Network reset. 117
ENETUNREACH Network unreachable. 118
ENOBUFS No buffer space. 119
ENODATA No message available. 120
ENOLINK No link. 121
ENOMSG No message. 122
ENOPROTOOPT No protocol option. 123
ENOSR No stream resources. 124
ENOSTR Not a stream. 125
ENOTCONN Not connected. 126
ENOTRECOVERABLE State not recoverable. 127
ENOTSOCK Not a socket. 128
ENOTSUP Not supported. 129
EOPNOTSUPP Operation not supported. 130
EOTHER Other. 131
EOVERFLOW Value too large. 132
EOWNERDEAD Owner dead. 133
EPROTO Protocol error. 134
EPROTONOSUPPORT Protocol not supported. 135
EPROTOTYPE Wrong protocol type. 136
ETIME Stream timeout. 137
ETIMEDOUT Timed out. 138
ETXTBSY Text file busy. 139
EWOULDBLOCK Operation would block. 140

See also

Global constants