Biblioteca estándar de C (libc) |
---|
Temas generales |
Encabezados varios |
errno.h es un archivo de encabezado de la biblioteca estándar del lenguaje de programación C. Define macros para informar y recuperar condiciones de error utilizando el símbolo errno
(abreviatura de "número de error"). [1]
errno
errno
actúa como una variable entera. Ciertas funciones de biblioteca almacenan un valor (el número de error) cuando detectan errores. Al iniciar el programa, el valor almacenado es cero. Las funciones de biblioteca almacenan solo valores mayores que cero. Cualquier función de biblioteca puede alterar el valor almacenado antes de regresar, ya sea que detecten errores o no. [2] La mayoría de las funciones indican que detectaron un error al devolver un valor especial, generalmente NULL para funciones que devuelven punteros y -1 para funciones que devuelven números enteros. Algunas funciones requieren que el llamador lo preestablezca errno
en cero y lo pruebe después para ver si se detectó un error.
La errno
macro se expande a un valor lvalue con tipo int
, a veces con los especificadores de tipo extern
y/o volatile
dependiendo de la plataforma. [3] Originalmente, esta era una ubicación de memoria estática, pero hoy en día casi siempre se usan macros para permitir subprocesos múltiples , de modo que cada subproceso verá su propio número de error local del subproceso .
El archivo de encabezado también define macros que se expanden a constantes enteras que representan los códigos de error. La biblioteca estándar de C solo requiere que se definan tres: [2]
Edom
sqrt(-1)
ÉRANGE
strtol("0xfffffffff", NULL, 0)
long
EILSEQ (requerido desde 1994, enmienda 1 a la norma C89) [4]
mbstowcs(buf, "\xff", 1)
Los sistemas operativos compatibles con POSIX como AIX , Linux o Solaris incluyen muchos otros valores de error, muchos de los cuales se utilizan con mucha más frecuencia que los anteriores, como EACCES para cuando un archivo no se puede abrir para leer. [5] C++11 define además muchos de los mismos valores que se encuentran dentro de la especificación POSIX. [6]
Tradicionalmente, la primera página de los manuales del sistema Unix , llamada intro(2), enumera todas las macros errno.h, pero este no es el caso de Linux , donde estas macros se enumeran en errno(3). [7]
Una cadena errno
puede traducirse a una cadena descriptiva usando strerror (definido en string.h ) o una extensión BSD llamada sys_errlist
. La traducción puede imprimirse directamente en el flujo de error estándar usando perror (definido en stdio.h ). Como strerror
en muchos sistemas tipo Unix no es seguro para subprocesos, strerror_r
se usa una versión segura para subprocesos, pero las definiciones conflictivas de POSIX y GNU la hacen incluso menos portable que la sys_errlist
tabla. [8]
La biblioteca GNU C (GLIBC) proporciona las macros de valores de error POSIX adicionales en el archivo de encabezado errno.h
. [9] Estas son las descripciones de las macros proporcionadas por strerror , excluyendo 41 y 58 ya que no están en el estándar POSIX :
EPERM (1)
ENOENTE (2)
Investigación científica (3)
EINTR (4)
OIEA (5)
ENXIO (6)
E2GRANDE (7)
EJECUTAR ENO (8)
Agencia de Desarrollo de la India (9)
NIÑO (10)
OTRA VEZ (11)
ENOMENO (12)
EACCESORIOS (13)
FALLO (14)
ENOTBLK (15)
Busy (16)
EEXIST (17)
EXDEV (18)
ENODEVO (19)
ENOTDIR (20)
EISDIR (21)
ENVÍO (22)
ARCHIVO (23)
ARCHIVO EM (24)
ENOTTI (25)
ETXTBSY (26)
EFBIG (27)
Enospc (28)
ESPÍRITU (29)
EROFS (30)
Enlace EM (31)
EPIPE (32)
Edom (33)
ÉRANGE (34)
EDEADLK (35)
ESMALTE DE ACERO (36)
ENOLCK (37)
ENOSIS (38)
ENOTEMPTA (39)
ELOOP (40)
ENOMSG (42)
EIDRM (43)
ECHRNG (44)
EL2NSYNC (45)
EL3HLT (46)
EL3RST (47)
ELNRNG (48)
EUNAQUE (49)
ENOCSI (50)
EL2HLT (51)
EBADE (52)
EBADR (53)
EXCELENTE (54)
ENOANO (55)
EBADRQC (56)
EBADSLT (57)
FUENTE ELECTRÓNICA (59)
ENOSTRO (60)
ENODATA (61)
TIEMPO (62)
ENOSR (63)
ENONET (64)
ENOPKG (65)
REMOTO (66)
ENLACE (67)
AEV (68)
ESRMNT (69)
Comercio electrónico (70)
EPROTO (71)
EMULTIHOP (72)
Departamento de Transporte de EE. UU . (73)
EBADMSG (74)
DESBORDAMIENTO (75)
ENOTUNIQ (76)
EBADFD (77)
EREMCHG (78)
ELIBACC (79)
ELIBAD (80)
ELIBSCN (81)
Elimax (82)
ELIBEXEC (83)
SECCION EIL (84)
ANTERIORIDAD (85)
ESTRIPADORA (86)
USUARIOS (87)
ENOTSOCKET (88)
Dirección de correo electrónico de la dirección (89)
TAMAÑO EMS (90)
EPROTOTIPO (91)
ENOPROTOOPTO (92)
SOPORTE DE EPROTONOS (93)
SOPORTE ESOCKT (94)
Suplemento de EOPNOT (95)
APOYO EPFNOS (96)
SOPORTE EAFNOS (97)
BEBIDAS ALCOHÓLICAS (98)
EADDRNOTAVAIL (99)
DESCARGA DE ENET (100)
ALCANCE EN EL ENET (101)
REINICIO DE ENE (102)
ECONNABORTADO (103)
REINICIO ECONÓMICO (104)
ENOBUFES (105)
EISCONN (106)
ENOTCONN (107)
APAGADO (108)
Referencias etómicas (109)
TIEMPO DE SALIDA (110)
ECONNREFUSED (111)
DESCARGA ELECTRÓNICA (112)
ALCANCE DEL HOSTUN (113)
YA (114)
UN PROGRESO (115)
ESTADIO (116)
EUCLEAN (117)
ENOTNAM (118)
DISPONIBLE (119)
EISNAM (120)
EREMOTEIO (121)
Cita original (122)
ENOMEDIO (123)
TIPO EMEDIO (124)
ECANCELADO (125)
ENOKEY (126)
KEYEXPIADA (127)
LLAVE ELECTRÓNICA REVOCADA (128)
LLAVE ELECTRÓNICA RECHAZADA (129)
PROPIETARIO MUERTO (130)
NO RECUPERABLE (131)
Matanza de ERF (132)
EHWVENENO (133)