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.
These global variables hold error codes used by the perror and strerror functions for printing error messages. Manifest constants for these variables are declared in STDLIB.H as follows:
extern int _doserrno;
extern int errno;
extern char *_sys_errlist[ ];
extern int _sys_nerr;
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. Always check errno immediately before and after a call that may set it. All errno values, defined as manifest constants in ERRNO.H, are UNIX-compatible. The values valid for 32-bit Windows applications are a subset of these UNIX values.
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 only, use _doserrno to access the operating-system error-code equivalents of errno codes. For other operations the value of _doserrno is undefined.
Each errno value is associated with an error message that can be printed using perror or stored in a string using strerror. perror and strerror use the _sys_errlist array and _sys_nerr, the number of elements in _sys_errlist, to process error information.
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.
The following errno values are compatible with 32-bit Windows applications. Only ERANGE and EDOM are specified in the ANSI standard.
Constant | System Error Message | Value |
E2BIG | Argument list too long | 7 |
EACCES | Permission denied | 13 |
EAGAIN | No more processes or not enough memory or maximum nesting level reached | 11 |
EBADF | Bad file number | 9 |
ECHILD | No spawned processes | 10 |
EDEADLOCK | Resource deadlock would occur | 36 |
EDOM | Math argument | 33 |
EEXIST | File exists | 17 |
EINVAL | Invalid argument | 22 |
EMFILE | Too many open files | 24 |
ENOENT | No such file or directory | 2 |
ENOEXEC | Exec format error | 8 |
ENOMEM | Not enough memory | 12 |
ENOSPC | No space left on device | 28 |
ERANGE | Result too large | 34 |
EXDEV | Cross-device link | 18 |