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