errno, _doserrno, _sys_errlist y _sys_nerrerrno, _doserrno, _sys_errlist, and _sys_nerr

Macros globales que contienen códigos de error que se establecen durante la ejecución del programa, así como los equivalentes de cadena de esos códigos para mostrarlos.Global macros that hold error codes that are set during program execution, and string equivalents of the error codes for display.

SintaxisSyntax

#define errno   (*_errno())
#define _doserrno   (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())

ObservacionesRemarks

El runtime establece en 0 errno y _doserrno durante el inicio del programa.Both errno and _doserrno are set to 0 by the runtime during program startup. errno se establece en un error en una llamada de nivel del sistema.errno is set on an error in a system-level call. Puesto que errno contiene el valor de la última llamada que la estableció, las llamadas posteriores pueden cambiar este valor.Because errno holds the value for the last call that set it, this value may be changed by succeeding calls. Llamadas de la biblioteca en tiempo de ejecución que establecen errno en un error no borran errno si la operación se realiza correctamente.Run-time library calls that set errno on an error do not clear errno on success. Borre siempre errno llamando a _set_errno(0) inmediatamente antes de que una llamada pueda establecerlo, y compruébelo inmediatamente después de la llamada.Always clear errno by calling _set_errno(0) immediately before a call that may set it, and check it immediately after the call.

Si se produce un error, errno no se establece necesariamente en el mismo valor que el código de error devuelto por una llamada del sistema.On an error, errno is not necessarily set to the same value as the error code returned by a system call. En operaciones de E/S, _doserrno almacena los equivalentes de código de error del sistema operativo de los códigos de errno.For I/O operations, _doserrno stores the operating-system error-code equivalents of errno codes. En la mayoría de las operaciones que no son de E/S, el valor de _doserrno no se establece.For most non-I/O operations, the value of _doserrno is not set.

Cada valor de errno se asocia a un mensaje de error en _sys_errlist que se puede imprimir mediante una de las funciones perror o almacenar en una cadena mediante las funciones strerror o strerror_s.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. Las funciones perror y strerror usan la matriz _sys_errlist y _sys_nerr (número de elementos en _sys_errlist) para procesar la información del error.The perror and strerror functions use the _sys_errlist array and _sys_nerr—the number of elements in _sys_errlist—to process error information. El acceso directo a _sys_errlist y _sys_nerr está en desuso por motivos de seguridad de código.Direct access to _sys_errlist and _sys_nerr is deprecated for code-security reasons. Se recomienda usar las versiones funcionales y más seguras en lugar de emplear macros globales, como se muestra aquí:We recommend that you use the more secure, functional versions instead of the global macros, as shown here:

Macro globalGlobal Macro Equivalentes funcionalesFunctional Equivalents
_doserrno _get_doserrno, _set_doserrno_get_doserrno, _set_doserrno
errno _get_errno, _set_errno_get_errno, _set_errno
_sys_errlist, _sys_nerr_sys_errlist, _sys_nerr strerror_s, _strerror_s, _wcserror_s, _ _wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s

Las rutinas matemáticas de la biblioteca establecen errno llamando a _matherr.Library math routines set errno by calling _matherr. Para controlar los errores matemáticos de otra manera, escriba su propia rutina de acuerdo con la descripción de referencia de _matherr y asígnele el nombre _matherr.To handle math errors differently, write your own routine according to the _matherr reference description and name it _matherr.

Todos los errno valores de la tabla siguiente son constantes predefinidas en <errno.h> y son compatibles con Unix.All errno values in the following table are predefined constants in <errno.h>, and are UNIX-compatible. Solo ERANGE, EILSEQ y EDOM se especifican en el estándar ISO C99.Only ERANGE, EILSEQ, and EDOM are specified in the ISO C99 standard.

ConstanteConstant Mensaje de error del sistemaSystem error message ValueValue
EPERM Operación no permitidaOperation not permitted 11
ENOENT No se encontró el archivo o directorio.No such file or directory 22
ESRCH No existe tal procesoNo such process 33
EINTR Función interrumpidaInterrupted function 44
EIO Error de E/SI/O error 55
ENXIO No existe tal dispositivo o direcciónNo such device or address 66
E2BIG Lista de argumentos demasiado largaArgument list too long 77
ENOEXEC Error de formato execExec format error 88
EBADF Número de archivo incorrectoBad file number 99
ECHILD No hay procesos de compilaciónNo spawned processes 1010
EAGAIN No hay más procesos, memoria insuficiente o se alcanzó el nivel de anidamiento máximoNo more processes or not enough memory or maximum nesting level reached 1111
ENOMEM Memoria insuficienteNot enough memory 1212
EACCES Permiso denegadoPermission denied 1313
EFAULT Dirección incorrectaBad address 1414
EBUSY Dispositivo o recurso no disponibleDevice or resource busy 1616
EEXIST El archivo existeFile exists 1717
EXDEV Vínculo de dispositivo cruzadoCross-device link 1818
ENODEV No existe tal dispositivoNo such device 1919
ENOTDIR No es un directorioNot a directory 2020
EISDIR Es un directorioIs a directory 2121
EINVAL Argumento no válidoInvalid argument 2222
ENFILE Demasiados archivos abiertos en el sistemaToo many files open in system 2323
EMFILE Demasiados archivos abiertosToo many open files 2424
ENOTTY Operación de control de E/S incorrectaInappropriate I/O control operation 2525
EFBIG Archivo demasiado grandeFile too large 2727
ENOSPC No queda espacio en el dispositivoNo space left on device 2828
ESPIPE Búsqueda no válidaInvalid seek 2929
EROFS Sistema de archivos de solo lecturaRead-only file system 3030
EMLINK Hay demasiados vínculosToo many links 3131
EPIPE Canalización rotaBroken pipe 3232
EDOM Argumento matemáticoMath argument 3333
ERANGE El resultado es demasiado grandeResult too large 3434
EDEADLK Podría ocurrir un bloqueo irreversible del recursoResource deadlock would occur 3636
EDEADLOCK Igual que EDEADLK por compatibilidad con versiones anteriores de Microsoft CSame as EDEADLK for compatibility with older Microsoft C versions 3636
ENAMETOOLONG El nombre de archivo es demasiado largoFilename too long 3838
ENOLCK No hay bloqueos disponiblesNo locks available 3939
ENOSYS Función no admitidaFunction not supported 4040
ENOTEMPTY El directorio no está vacíoDirectory not empty 4141
EILSEQ Secuencia de bytes no válidaIllegal byte sequence 4242
STRUNCATE Se truncó la cadenaString was truncated 8080

RequisitosRequirements

Macro globalGlobal macro Encabezado necesarioRequired header Encabezado opcionalOptional header
errno <errno.h> or <stdlib.h> , <cerrno> or <cstdlib> (C++)<errno.h> or <stdlib.h>, <cerrno> or <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr_doserrno, _sys_errlist, _sys_nerr <stdlib.h>, <cstdlib> (C++)<stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)<errno.h>, <cerrno> (C++)

Las macros _doserrno, _sys_errlist y _sys_nerr son extensiones de Microsoft.The _doserrno, _sys_errlist, and _sys_nerr macros are Microsoft extensions. Para obtener más información sobre compatibilidad, vea Compatibility.For more compatibility information, see Compatibility.

Consulta tambiénSee also

Variables globalesGlobal Variables
errno (constantes)errno Constants
perror, _wperrorperror, _wperror
strerror, _strerror, _wcserror, _ _wcserrorstrerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s, _ _wcserror_sstrerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno_get_doserrno
_set_doserrno_set_doserrno
_get_errno_get_errno
_set_errno_set_errno