Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at errno, _doserrno, _sys_errlist, and _sys_nerr.
Global macros that hold error codes that are set during program execution, and string equivalents of the error codes for display.
Syntax
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Remarks
Both errno
and _doserrno
are set to 0 by the runtime during program startup. errno
is set on an error in a system-level call. Because errno
holds the value for the last call that set it, this value may be changed by succeeding calls. Run-time library calls that set errno
on an error do not clear errno
on success. Always clear errno
by calling _set_errno(0)
immediately before a call that may set it, and check it immediately after the call.
On an error, errno
is not necessarily set to the same value as the error code returned by a system call. For I/O operations, _doserrno
stores the operating-system error-code equivalents of errno
codes. For most non-I/O operations, the value of _doserrno
is not set.
Each errno
value is associated with an error message in _sys_errlist
that can be printed by using one of the perror functions, or stored in a string by using one of the strerror or strerror_s functions. The perror
and strerror
functions use the _sys_errlist
array and _sys_nerr
—the number of elements in _sys_errlist
—to process error information. Direct access to _sys_errlist
and _sys_nerr
is deprecated for code-security reasons. We recommend that you use the more secure, functional versions instead of the global macros, as shown here:
Global Macro | Functional Equivalents |
---|---|
_doserrno |
_get_doserrno, _set_doserrno |
errno |
_get_errno, _set_errno |
_sys_errlist , _sys_nerr |
strerror_s, _strerror_s, _wcserror_s, __wcserror_s |
Library math routines set errno
by calling _matherr. To handle math errors differently, write your own routine according to the _matherr
reference description and name it _matherr
.
All errno
values in the following table are predefined constants in <errno.h>, and are UNIX-compatible. Only ERANGE
, EILSEQ
, and EDOM
are specified in the ISO C99 standard.
Constant | System error message | Value |
---|---|---|
EPERM |
Operation not permitted | 1 |
ENOENT |
No such file or directory | 2 |
ESRCH |
No such process | 3 |
EINTR |
Interrupted function | 4 |
EIO |
I/O error | 5 |
ENXIO |
No such device or address | 6 |
E2BIG |
Argument list too long | 7 |
ENOEXEC |
Exec format error | 8 |
EBADF |
Bad file number | 9 |
ECHILD |
No spawned processes | 10 |
EAGAIN |
No more processes or not enough memory or maximum nesting level reached | 11 |
ENOMEM |
Not enough memory | 12 |
EACCES |
Permission denied | 13 |
EFAULT |
Bad address | 14 |
EBUSY |
Device or resource busy | 16 |
EEXIST |
File exists | 17 |
EXDEV |
Cross-device link | 18 |
ENODEV |
No such device | 19 |
ENOTDIR |
Not a directory | 20 |
EISDIR |
Is a directory | 21 |
EINVAL |
Invalid argument | 22 |
ENFILE |
Too many files open in system | 23 |
EMFILE |
Too many open files | 24 |
ENOTTY |
Inappropriate I/O control operation | 25 |
EFBIG |
File too large | 27 |
ENOSPC |
No space left on device | 28 |
ESPIPE |
Invalid seek | 29 |
EROFS |
Read-only file system | 30 |
EMLINK |
Too many links | 31 |
EPIPE |
Broken pipe | 32 |
EDOM |
Math argument | 33 |
ERANGE |
Result too large | 34 |
EDEADLK |
Resource deadlock would occur | 36 |
EDEADLOCK |
Same as EDEADLK for compatibility with older Microsoft C versions | 36 |
ENAMETOOLONG |
Filename too long | 38 |
ENOLCK |
No locks available | 39 |
ENOSYS |
Function not supported | 40 |
ENOTEMPTY |
Directory not empty | 41 |
EILSEQ |
Illegal byte sequence | 42 |
STRUNCATE |
String was truncated | 80 |
Requirements
Global macro | Required header | Optional header |
---|---|---|
errno |
<errno.h> or <stdlib.h>, <cerrno> or <cstdlib> (C++) | |
_doserrno , _sys_errlist , _sys_nerr |
<stdlib.h>, <cstdlib> (C++) | <errno.h>, <cerrno> (C++) |
The _doserrno
, _sys_errlist
, and _sys_nerr
macros are Microsoft extensions. For more compatibility information, see Compatibility.
See Also
Global Variables
errno Constants
perror, _wperror
strerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno