errno.h - errno.h
Biblioteca estándar de C |
---|
Temas generales |
Encabezados varios |
errno.h es un archivo de cabecera 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").
errno
actúa como una variable entera. Un valor (el número de error) se almacena en errno
por ciertas funciones de la biblioteca cuando se detectan errores. Al inicio del 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 la devolución, ya sea que detecten errores o no. 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
a cero y luego la pruebe para ver si se detectó un error.
La errno
macro se expande a un lvalue con type int
, a veces con los especificadores extern
y / o volatile
type dependiendo de la plataforma. Originalmente, esta era una ubicación de memoria estática, pero las macros casi siempre se usan hoy en día para permitir múltiples subprocesos , de modo que cada subproceso verá 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 solo requiere que se definan tres:
EDOM
- Resultados de un parámetro fuera del dominio de una función, p. Ej.
sqrt(-1)
BORRAR
- Resultados de un resultado fuera del rango de una función, por ejemplo,
strtol("0xfffffffff",NULL,0)
en sistemas con un ancho de 32 bitslong
EILSEQ (Requerido desde 1994 Enmienda 1 al estándar C89)
- Resulta de una secuencia de bytes 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 para cuando un archivo no se puede abrir para leer. Además, C ++ 11 define muchos de los mismos valores que se encuentran dentro de 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 su lugar en errno (3).
An errno
se 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 errores estándar usando perror (definido en stdio.h ). Como strerror
en muchos sistemas similares a Unix no es seguro para subprocesos, strerror_r
se usa una versión segura para subprocesos , pero las definiciones conflictivas de POSIX y GNU lo hacen incluso menos portátil que la sys_errlist
tabla.
Ver también
Referencias
Bibliografía
- Stevens, W. Richard; Rago, Stephen A. (24 de mayo de 2013). Programación avanzada en el entorno UNIX (Tercera ed.). Addison-Wesley Professional . ISBN 978-0321637734 . Consultado el 27 de febrero de 2015 .
enlaces externos
- Manual de llamadas al sistema FreeBSD -
- Manual del programador de Linux - Funciones de biblioteca -
- Manual de la biblioteca GNU C: códigos de error
- Listas de valores de errno en Linux, tanto numéricos como simbólicos