errno, _doserrno, _sys_errlist, y _sys_nerr
Estas variables globales contienen códigos de error utilizados por perror y strerror funciona para imprimir mensajes de error.Las versiones funcionales más seguras enumeradas en esta tabla se deben usar en lugar de la variable global.
variable global |
equivalentes funcionales |
---|---|
_doserrno |
|
_errno |
estas variables se declaran en STDLIB.H como
extern int _doserrno;
extern int errno;
extern char *_sys_errlist[ ];
extern int _sys_nerr;
Comentarios
errno y _errno conectados a la misma variable.errno es definido con el código #define errno (*_errno())
errno se establece en un error en una llamada al nivel.Dado que errno contiene el valor de la última llamada que lo establece, este valor puede cambiar completan correctamente llamadas.Compruebe siempre errno inmediatamente antes y después de una llamada que puede establecerlo.
En un error, errno no se establece necesariamente en el mismo valor que el código de error devuelto por una llamada al sistema.Para las operaciones de E/S, utilice _doserrno de tener acceso a los equivalentes del código de error del sistema operativo de los códigos de errno .para la mayoría de las operaciones de non-I/O el valor de _doserrno es indefinido.
Cada valor de errno es asociado con un mensaje de error que se puede imprimir mediante perror o almacenar en una cadena mediante strerror.perror y strerror utilizan la matriz y _sys_nerr, el número de _sys_errlist de elementos en _sys_errlist, para procesar la información de error.
Las rutinas matemáticas de biblioteca establecen errno llamando a _matherr.Para controlar los errores de matemáticas de manera diferente, escriba poseen la rutina de la descripción de la referencia de _matherr y el nombre _matherr.
Todos los valores de errno , definido como constantes predefinidas en ERRNO.H, son UNIX-compatible y se enumeran.Sólo ERANGE, EILSEQ y EDOM se especifican en el estándar ANSI.
Constante |
Mensaje de error del sistema |
Valor |
---|---|---|
EPERM |
operación no permitida |
1 |
ENOENT |
Dicho archivo o directorio |
2 |
ESRCH |
Dichos proceso |
3 |
EINTR |
función interrumpida |
4 |
EIO |
Error de E/S |
5 |
ENXIO |
Dicho dispositivo o dirección |
6 |
E2BIG |
Lista de argumentos demasiado largo |
7 |
ENOEXEC |
Error de formato exec |
8 |
EBADF |
número de archivo incorrecto |
9 |
ECHILD |
Los procesos de generación |
10 |
EAGAIN |
No más de procesos o memoria insuficiente o nivel de anidamiento máximo de acceso |
11 |
ENOMEM |
Memoria insuficiente |
12 |
EACCES |
permiso denegado |
13 |
EFAULT |
Dirección errónea |
14 |
EBUSY |
Dispositivo o recurso No disponibles |
16 |
EEXIST |
el archivo existe |
17 |
EXDEV |
Enlace a otro dispositivo |
18 |
ENODEV |
Dicho dispositivo |
19 |
ENOTDIR |
no un directorio |
20 |
EISDIR |
es un directorio |
21 |
EINVAL |
Argumento no válido |
22 |
ENFILE |
Demasiados archivos abiertos en el sistema |
23 |
EMFILE |
Demasiados archivos abiertos |
24 |
ENOTTY |
Operación de control de E/S incorrecta |
25 |
EFBIG |
archivo demasiado grande |
27 |
ENOSPC |
Ningún espacio está en el dispositivo |
28 |
ESPIPE |
Búsqueda no válida |
29 |
EROFS |
Sistema de archivos de sólo lectura |
30 |
EMLINK |
demasiados vínculos |
31 |
EPIPE |
Canalización rota |
32 |
EDOM |
Argumento de matemáticas |
33 |
ERANGE |
resultado demasiado grande |
34 |
EDEADLK |
El interbloqueo de recursos aparecería |
36 |
EDEADLOCK |
Igual que EDEADLK para la compatibilidad con varias versiones anteriores de Microsoft C |
36 |
ENAMETOOLONG |
Nombre de archivo demasiado largo |
38 |
ENOLCK |
Ningún bloqueo disponibles |
39 |
ENOSYS |
Función no compatible |
40 |
ENOTEMPTY |
directorio no vacío |
41 |
EILSEQ |
Secuencia no válida de byte |
42 |
STRUNCATE |
La cadena aparece truncado |
80 |