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").
errno
actúa como una variable entera. Ciertas funciones de la biblioteca almacenan un valor (el número de error) en errno
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. 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 preestablezca errno
en cero y lo pruebe después para ver si se detectó un error.
La macro errno
se expande a un valor l con tipo int
, a veces con extern
y/o volatile
especificadores de tipo dependiendo de la plataforma. 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 de C sólo requiere que se definan tres:
EDOM
- Resultados de un parámetro fuera del dominio de una función, por ejemplo.
sqrt(-1)
RANGO
- Resultados de un resultado fuera del rango de una función, por ejemplo.
strtol("0xfffffffff", NULL, 0)
en sistemas de 32 bits de ancholong
EILSEQ (Requerido desde 1994 Enmienda 1 al estándar C89)
- Resultados de una secuencia de byte ilegal, por ejemplo.
mbstowcs(buf, "xff", 1)
en sistemas que usan UTF-8.
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 durante lectura. C++ 11 define además muchos de los mismos valores que se encuentran en la especificación POSIX.
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).
Un errno
se puede traducir a un texto descriptivo. cadena 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 strerror
en muchos sistemas tipo Unix no es un subproceso -safe, se utiliza una versión segura para subprocesos strerror_r
, pero las definiciones contradictorias de POSIX y GNU lo hacen incluso menos portátil que tabla sys_errlist
.
Contenido relacionado
Matra Alicia
Exim
EBurro2000