stringtranslate.com

errno.h

errno.h es un archivo de encabezado en 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]

errnoactúa como una variable entera. errnoCiertas 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 sólo valores mayores que cero. Cualquier función de biblioteca puede alterar el valor almacenado antes del retorno, detecte o no errores. [2] La mayoría de las funciones indican que detectaron un error al devolver un valor especial, normalmente NULL para funciones que devuelven punteros y -1 para funciones que devuelven números enteros. Algunas funciones requieren que la persona que llama se preestablezca errnoen cero y lo pruebe después para ver si se detectó un error.

La errnomacro se expande a un valor l con tipo int, a veces con los especificadores externy/o volatiletipo 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 vea su propio número de error local de 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 C solo requiere que se definan tres: [2]

EDOM

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

RANGO

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

EILSEQ (Requerido desde 1994 Enmienda 1 al estándar C89) [4]

Resulta 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 cuando un archivo no se puede abrir para leerlo. [5] C++11 define además muchos de los mismos valores que se encuentran en la especificación POSIX. [6]

Tradicionalmente, la primera página de los manuales del sistema Unix , denominada 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]

An errnose puede traducir a una cadena descriptiva usando strerror (definido en string.h ) o una extensión BSD llamada sys_errlist. La traducción se puede imprimir 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 utiliza una versión segura para subprocesos, pero las definiciones contradictorias de POSIX y GNU lo hacen incluso menos portátil que la sys_errlisttabla. [8]

Macros GLIBC

La biblioteca GNU C (GLIBC) proporciona 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

ESCR (3)

No existe tal proceso

EINTR (4)

Llamada al sistema interrumpida

OIE (5)

Error de entrada/salida

ENXIO (6)

No existe tal dispositivo o dirección

E2BIG (7)

Lista de argumentos demasiado larga

ENOEXEC (8)

Error de formato ejecutivo

EBADF (9)

descriptor de archivo incorrecto

NIÑO (10)

Sin procesos secundarios

OTRA VEZ (11)

Recurso temporalmente no disponible

ENOMEMA (12)

No se puede asignar memoria

ACCESO (13)

Permiso denegado

FALLA (14)

Mala dirección

ENOTBLK (15)

Se requiere dispositivo de bloqueo

EBUSY (16)

Dispositivo o recurso ocupado

EXISTE (17)

El archivo existe

EXDEV (18)

Enlace entre dispositivos no válido

ENODEV (19)

Hay tal dispositivo

ENOTDIR (20)

No es un directorio

EISDIR (21)

Es un directorio

EINVAL (22)

Argumento no válido

ENFILAR (23)

Demasiados archivos abiertos en el sistema

EMFILE (24)

Demasiados archivos abiertos

ENOTTY (25)

Ioctl inapropiado para el dispositivo

ETXTBSY (26)

Archivo de texto ocupado

EFBIG (27)

Archivo demasiado grande

ENOSPC (28)

no queda espacio en el dispositivo

ESPIPE (29)

búsqueda ilegal

EROFS (30)

Sistema de archivos de sólo lectura

EMLINK (31)

Demasiados enlaces

ESPACIO (32)

Tuberia rota

EDOM (33)

Argumento numérico fuera de dominio

RANGO (34)

Resultado numérico fuera de rango

EDEADLK (35)

Se evitó el estancamiento de recursos

ENAMETOOLONG (36)

Nombre de archivo demasiado largo

ENOLCA (37)

No hay cerraduras disponibles

ENÓSYS (38)

Función no implementada

ENOTEMPIA (39)

Directorio no 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

EL3 PRIMERO (47)

Reinicio de nivel 3

ELNRNG (48)

Número de enlace fuera de rango

EUNATCH (49)

Controlador de protocolo no adjunto

ENOCSI (50)

No hay estructura CSI disponible

EL2HLT (51)

Nivel 2 detenido

EBADE (52)

Intercambio no válido

EBADR (53)

Descriptor de solicitud no válido

EXCOMPLETO (54)

Intercambio completo

ENOANO (55)

Sin ánodo

EBADRQC (56)

Código de solicitud no válido

EBADSLT (57)

Ranura no válida

EBFONT (59)

Formato de archivo de fuente incorrecto

ENÓSTR (60)

El dispositivo no es una transmisión

ENODATA (61)

Datos no disponibles

TIEMPO (62)

El temporizador expiró

ENOSR (63)

Recursos fuera de flujos

ENONET (64)

La máquina no está en la red.

ENOPKG (65)

Paquete no instalado

EREMOTO (66)

El objeto es remoto

ENOLINK (67)

El enlace ha sido cortado.

EADV (68)

Error de publicidad

ESRMNT (69)

error de montaje superior

COMM (70)

Error de comunicación en el envío

EPROTO (71)

Error de protocolo

EMULTIHOP (72)

Intento de salto múltiple

EDOTDOT (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)

Acceder a una biblioteca compartida corrupta

ELIBSCN (81)

Sección .lib en a.out dañada

ELIBMAX (82)

Intentar vincular demasiadas bibliotecas compartidas

ELIBEXEC (83)

No se puede ejecutar una biblioteca compartida directamente

EILSEQ (84)

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

EREINICIO (85)

La llamada al sistema interrumpida debe reiniciarse

ESTRPIPE (86)

Error de tubería de flujos

USUARIOS (87)

Demasiados usuarios

ENOTSOCK (88)

Operación de zócalo sin zócalo

EDESTADDRREQ (89)

Dirección de destino requerida

TAMAÑO EMSG (90)

Mensaje demasiado largo

EPROTOTIPO (91)

Tipo de protocolo incorrecto para el socket

ENOPROTOOPT (92)

Protocolo no disponible

SOPORTE EPROTONOS (93)

Protocolo no compatible

ESOCKTNOSAPOYO (94)

Tipo de enchufe no compatible

EOPNOTSUPP (95)

Operación no compatible

EPFNOSAPOYO (96)

Familia de protocolos no compatible

EAFNOSAPOYO (97)

Familia de direcciones no admitida por el protocolo

EADDRINUSE (98)

Dirección ya en uso

EADDRNOTAVAIL (99)

No se puede asignar la dirección solicitada

ENETDOWN (100)

La red está caída

ENETUNREACH (101)

La red es inalcanzable

ENTRESET (102)

Conexión de red interrumpida al restablecer

ECONNABORTADOS (103)

el software causó falla de conexión

REINICIO ECONÓMICO (104)

Restablecimiento de la conexión por parte del par

ENOBUFES (105)

No hay espacio de buffer 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 del cierre del punto final de transporte

ETOOMANYREFS (109)

Demasiadas referencias: no se puede empalmar

TIEMPO FUERA (110)

Tiempo de conexión agotado

ECONNREGADO (111)

conexión denegada

EHOSTDOWN (112)

El anfitrión no funciona

EHOSTUNREACH (113)

No hay ruta para hospedar

YA YA (114)

Operación ya en marcha

EINPROGRESO (115)

Operación ahora en progreso

ESTATAL (116)

Identificador de archivo obsoleto

EUCLEAN (117)

La estructura necesita limpieza

ENOTNAM (118)

No es un archivo de tipo con nombre XENIX

DISPONIBLE (119)

No hay semáforos XENIX disponibles

EISNAM (120)

Es un archivo de tipo con nombre

EREMOTEIO (121)

Error de E/S remota

EDQUOT (122)

Ha excedido la cuota de disco

ENOMEDIO (123)

No se encontró ningún medio

TIPO MEDIO (124)

Tipo de medio incorrecto

ECANCELADO (125)

Operación cancelada

ENOCÍA (126)

La clave requerida no está disponible

EKEYEXPIRADA (127)

La clave ha caducado

EKEYREVOCADO (128)

La clave ha sido revocada

EKEYRECHAZADO (129)

La clave fue rechazada por el servicio.

PROPIETARIO MUERTO (130)

El dueño murió

ENOTRECUPABLE (131)

Estado no recuperable

ERFKILL (132)

Operación no posible debido a RF-kill

EHWVENENO (133)

La página de memoria tiene un error de hardware

Ver también

Referencias

  1. ^ Estándar internacional para el lenguaje de programación C (C11), ISO/IEC 9899:2011, p. 205
  2. ^ ab Estándar internacional para el lenguaje de programación C (C99), ISO/IEC 9899:1999, p. 186
  3. ^ "Buscar errores". La biblioteca GNU C (glibc) . Proyecto GNU. 2014-02-08 . Consultado el 25 de junio de 2014 .
  4. ^ "Una 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, 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 del strerror". www.club.cc.cmu.edu .
  9. ^ "Códigos de error (la biblioteca GNU C)". www.gnu.org . Consultado el 21 de octubre de 2023 .

Bibliografía

enlaces externos