errno, _doserrno, _sys_errlist y _sys_nerr

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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.

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

El runtime establece en 0 errno y _doserrno durante el inicio del programa. errno se establece en un error en una llamada de nivel del sistema. Puesto que errno contiene el valor de la última llamada que la estableció, las llamadas posteriores pueden cambiar este valor. 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. 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.

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. En operaciones de E/S, _doserrno almacena los equivalentes de código de error del sistema operativo de los códigos de errno. En la mayoría de las operaciones que no son de E/S, el valor de _doserrno no se establece.

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. 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. El acceso directo a _sys_errlist y _sys_nerr está en desuso por motivos de seguridad de código. Se recomienda usar las versiones funcionales y más seguras en lugar de emplear macros globales, como se muestra aquí:

Macro globalEquivalentes funcionales
_doserrno_get_doserrno, _set_doserrno
errno_get_errno, _set_errno
_sys_errlist, _sys_nerrstrerror_s, _strerror_s, _wcserror_s, __wcserror_s

Las rutinas matemáticas de la biblioteca establecen errno llamando a _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.

Todos los valores de errno de la siguiente tabla son constantes predefinidas en <errno.h> y son compatibles con UNIX. Solo ERANGE, EILSEQ y EDOM se especifican en el estándar ISO C99.

ConstanteMensaje de error del sistemaValor
EPERMOperación no permitida1
ENOENTNo existe ese archivo o directorio2
ESRCHNo existe tal proceso3
EINTRFunción interrumpida4
EIOError de E/S5
ENXIONo existe tal dispositivo o dirección6
E2BIGLista de argumentos demasiado larga7
ENOEXECError de formato exec8
EBADFNúmero de archivo incorrecto9
ECHILDNo hay procesos de compilación10
EAGAINNo hay más procesos, memoria insuficiente o se alcanzó el nivel de anidamiento máximo11
ENOMEMMemoria insuficiente12
EACCESPermiso denegado13
EFAULTDirección incorrecta14
EBUSYDispositivo o recurso no disponible16
EEXISTEl archivo existe17
EXDEVVínculo de dispositivo cruzado18
ENODEVNo existe tal dispositivo19
ENOTDIRNo es un directorio20
EISDIREs un directorio21
EINVALArgumento no válido22
ENFILEDemasiados archivos abiertos en el sistema23
EMFILEDemasiados archivos abiertos24
ENOTTYOperación de control de E/S incorrecta25
EFBIGArchivo demasiado grande27
ENOSPCNo queda espacio en el dispositivo28
ESPIPEBúsqueda no válida29
EROFSSistema de archivos de solo lectura30
EMLINKHay demasiados vínculos31
EPIPECanalización rota32
EDOMArgumento matemático33
ERANGEEl resultado es demasiado grande34
EDEADLKPodría ocurrir un bloqueo irreversible del recurso36
EDEADLOCKIgual que EDEADLK por compatibilidad con versiones anteriores de Microsoft C36
ENAMETOOLONGEl nombre de archivo es demasiado largo38
ENOLCKNo hay bloqueos disponibles39
ENOSYSFunción no admitida40
ENOTEMPTYEl directorio no está vacío41
EILSEQSecuencia de bytes no válida42
STRUNCATESe truncó la cadena80
Macro globalEncabezado necesarioEncabezado opcional
errno<errno.h> o <stdlib.h>, <cerrno> o <cstdlib> (C++)
_doserrno, _sys_errlist, _sys_nerr<stdlib.h>, <cstdlib> (C++)<errno.h>, <cerrno> (C++)

Las macros _doserrno, _sys_errlist y _sys_nerr son extensiones de Microsoft. Para obtener más información de compatibilidad, vea Compatibilidad.

Variables globales
errno (Constantes)
perror, _wperror
strerror, _strerror, _wcserror, __wcserror
strerror_s, _strerror_s, _wcserror_s, __wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno

Mostrar: