errno.h

Archivo de encabezado para programas en C

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]

errnoerrnoactú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 errnoen cero y lo pruebe después para ver si se detectó un error.

La errnomacro se expande a un valor lvalue con tipo int, a veces con los especificadores de tipo externy/o volatiledependiendo 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

Resultados de un parámetro fuera del dominio de una función, por ejemplosqrt(-1)

ÉRANGE

Resultados de un resultado fuera del rango de una función, por ejemplo, en sistemas con un ancho de 32 bits.strtol("0xfffffffff", NULL, 0)long

EILSEQ (requerido desde 1994, enmienda 1 a la norma C89) [4]

Resultados de una secuencia de bytes ilegal, por ejemplo, en sistemas que utilizan UTF-8 .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 errnopuede 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 strerroren muchos sistemas tipo Unix no es seguro para subprocesos, strerror_rse usa una versión segura para subprocesos, pero las definiciones conflictivas de POSIX y GNU la hacen incluso menos portable que la sys_errlisttabla. [8]

Macros GLIBC

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)

Operación no permitida

ENOENTE (2)

El fichero o directorio no existe

Investigación científica (3)

No existe tal proceso

EINTR (4)

Llamada al sistema interrumpida

OIEA (5)

Error de entrada/salida

ENXIO (6)

No existe tal dispositivo o dirección

E2GRANDE (7)

La lista de argumentos es demasiado larga

EJECUTAR ENO (8)

Error de formato de ejecución

Agencia de Desarrollo de la India (9)

Descriptor de archivo incorrecto

NIÑO (10)

Sin procesos secundarios

OTRA VEZ (11)

Recurso no disponible temporalmente

ENOMENO (12)

No se puede asignar memoria

EACCESORIOS (13)

Permiso denegado

FALLO (14)

Mala dirección

ENOTBLK (15)

Se requiere dispositivo de bloqueo

Busy (16)

Dispositivo o recurso ocupado

EEXIST (17)

El archivo existe

EXDEV (18)

Enlace entre dispositivos no válido

ENODEVO (19)

No existe tal dispositivo

ENOTDIR (20)

No es un directorio

EISDIR (21)

Es un directorio

ENVÍO (22)

Argumento inválido

ARCHIVO (23)

Demasiados archivos abiertos en el sistema

ARCHIVO EM (24)

Demasiados archivos abiertos

ENOTTI (25)

Ioctl inadecuado para el dispositivo

ETXTBSY (26)

Archivo de texto ocupado

EFBIG (27)

El archivo es demasiado grande

Enospc (28)

No queda espacio en el dispositivo

ESPÍRITU (29)

Búsqueda ilegal

EROFS (30)

Sistema de archivos de sólo lectura

Enlace EM (31)

Demasiados enlaces

EPIPE (32)

Tubería rota

Edom (33)

Argumento numérico fuera de dominio

ÉRANGE (34)

Resultado numérico fuera de rango

EDEADLK (35)

Se evitó el bloqueo de recursos

ESMALTE DE ACERO (36)

El nombre del archivo es demasiado largo

ENOLCK (37)

No hay cerraduras disponibles

ENOSIS (38)

Función no implementada

ENOTEMPTA (39)

El directorio no está vacío

ELOOP (40)

Demasiados niveles de enlaces simbólicos

ENOMSG (42)

No hay mensaje del tipo deseado

EIDRM (43)

Identificador eliminado

ECHRNG (44)

Número de canal fuera de rango

EL2NSYNC (45)

Nivel 2 no sincronizado

EL3HLT (46)

Nivel 3 detenido

EL3RST (47)

Reinicio de nivel 3

ELNRNG (48)

Número de enlace fuera de rango

EUNAQUE (49)

Controlador de protocolo no adjunto

ENOCSI (50)

No hay estructura CSI disponible

EL2HLT (51)

Nivel 2 detenido

EBADE (52)

Cambio no válido

EBADR (53)

Descriptor de solicitud no válido

EXCELENTE (54)

Cambio completo

ENOANO (55)

Sin ánodo

EBADRQC (56)

Código de solicitud no válido

EBADSLT (57)

Ranura no válida

FUENTE ELECTRÓNICA (59)

Formato de archivo de fuente incorrecto

ENOSTRO (60)

El dispositivo no es una transmisión

ENODATA (61)

No hay datos disponibles

TIEMPO (62)

El temporizador expiró

ENOSR (63)

Recursos fuera de streams

ENONET (64)

La máquina no está en la red

ENOPKG (65)

Paquete no instalado

REMOTO (66)

El objeto es remoto

ENLACE (67)

El enlace ha sido cortado

AEV (68)

Error de publicidad

ESRMNT (69)

Error de srmount

Comercio electrónico (70)

Error de comunicación al enviar

EPROTO (71)

Error de protocolo

EMULTIHOP (72)

Intento de multisalto

Departamento de Transporte de EE. UU . (73)

Error específico de RFS

EBADMSG (74)

Mal mensaje

DESBORDAMIENTO (75)

Valor demasiado grande para el tipo de datos definido

ENOTUNIQ (76)

Nombre no único en la red

EBADFD (77)

Descriptor de archivo en mal estado

EREMCHG (78)

Dirección remota cambiada

ELIBACC (79)

No se puede acceder a una biblioteca compartida necesaria

ELIBAD (80)

Cómo acceder a una biblioteca compartida dañada

ELIBSCN (81)

La sección .lib en a.out está dañada

Elimax (82)

Intentando vincular demasiadas bibliotecas compartidas

ELIBEXEC (83)

No se puede ejecutar una biblioteca compartida directamente

SECCION EIL (84)

Carácter multibyte o ancho no válido o incompleto

ANTERIORIDAD (85)

La llamada al sistema interrumpida debe reiniciarse

ESTRIPADORA (86)

Error en la tubería de Streams

USUARIOS (87)

Demasiados usuarios

ENOTSOCKET (88)

Operación de socket en no socket

Dirección de correo electrónico de la dirección (89)

Dirección de destino requerida

TAMAÑO EMS (90)

El mensaje es demasiado largo

EPROTOTIPO (91)

Protocolo de tipo incorrecto para socket

ENOPROTOOPTO (92)

Protocolo no disponible

SOPORTE DE EPROTONOS (93)

Protocolo no compatible

SOPORTE ESOCKT (94)

Tipo de socket no compatible

Suplemento de EOPNOT (95)

Operación no admitida

APOYO EPFNOS (96)

Familia de protocolos no compatible

SOPORTE EAFNOS (97)

Familia de direcciones no admitida por el protocolo

BEBIDAS ALCOHÓLICAS (98)

Dirección ya en uso

EADDRNOTAVAIL (99)

No se puede asignar la dirección solicitada

DESCARGA DE ENET (100)

La red está caída

ALCANCE EN EL ENET (101)

La red no es accesible

REINICIO DE ENE (102)

La conexión a la red se perdió al reiniciar

ECONNABORTADO (103)

El software provocó la interrupción de la conexión

REINICIO ECONÓMICO (104)

Conexión restablecida por el par

ENOBUFES (105)

No hay espacio de búfer disponible

EISCONN (106)

El punto final de transporte ya está conectado

ENOTCONN (107)

El punto final de transporte no está conectado

APAGADO (108)

No se puede enviar después de apagar el punto final de transporte

Referencias etómicas (109)

Demasiadas referencias: no se pueden unir

TIEMPO DE SALIDA (110)

Se agotó el tiempo de conexión

ECONNREFUSED (111)

Conexión rechazada

DESCARGA ELECTRÓNICA (112)

El host está inactivo

ALCANCE DEL HOSTUN (113)

No hay ruta al host

YA (114)

Operación ya en marcha

UN PROGRESO (115)

Operación ya en curso

ESTADIO (116)

Identificador de archivo obsoleto

EUCLEAN (117)

La estructura necesita limpieza

ENOTNAM (118)

No es un archivo de tipo nombrado XENIX

DISPONIBLE (119)

No hay semáforos XENIX disponibles

EISNAM (120)

Es un archivo de tipo nombrado

EREMOTEIO (121)

Error de E/S remota

Cita original (122)

Cuota de disco excedida

ENOMEDIO (123)

No se encontró ningún medio

TIPO EMEDIO (124)

Tipo de medio incorrecto

ECANCELADO (125)

Operación cancelada

ENOKEY (126)

La clave requerida no está disponible

KEYEXPIADA (127)

La clave ha expirado

LLAVE ELECTRÓNICA REVOCADA (128)

La clave ha sido revocada

LLAVE ELECTRÓNICA RECHAZADA (129)

La clave fue rechazada por el servicio

PROPIETARIO MUERTO (130)

El dueño murió

NO RECUPERABLE (131)

Estado no recuperable

Matanza de ERF (132)

Operación no posible debido a RF-kill

EHWVENENO (133)

La página de memoria tiene un error de hardware

Véase también

Referencias

  1. ^ Norma internacional para el lenguaje de programación C (C11), ISO/IEC 9899:2011, pág. 205
  2. ^ ab Norma internacional para el lenguaje de programación C (C99), ISO/IEC 9899:1999, pág. 186
  3. ^ "Comprobación de errores". La biblioteca C de GNU (glibc) . Proyecto GNU. 8 de febrero de 2014. Consultado el 25 de junio de 2014 .
  4. ^ "Breve descripción del Anexo Normativo 1" . Consultado el 12 de septiembre de 2013 .
  5. ^ errno.h : números de error del sistema – Referencia de definiciones básicas, La especificación única de UNIX , versión 4 de The Open Group
  6. ^ "Números de error - cppreference.com" . Consultado el 8 de mayo de 2015 .
  7. ^ Stevens y Rago 2013, pág. 14.
  8. ^ McCabe, Colin. "El problema con el terror". www.club.cc.cmu.edu .
  9. ^ "Códigos de error (La biblioteca C de GNU)". www.gnu.org . Consultado el 21 de octubre de 2023 .

Bibliografía

  • intro(2) –  Manual de llamadas al sistema de FreeBSD
  • errno(3) –  Manual del programador de Linux – Funciones de la biblioteca
  • Manual de la biblioteca C de GNU: Códigos de error
  • Listas de valores errno en Linux, tanto numéricos como simbólicos
Obtenido de "https://es.wikipedia.org/w/index.php?title=Errno.h&oldid=1181198332"