ERRNO(3)

NOMBRE
errno - número del último error

SINOPSIS
#include <errno.h>

extern int errno;

DESCRIPCIÓN
Algunas llamadas al sistema (y algunas funciones de biblioteca) dan un valor al entero errno para indicar qué ha ido mal. Su valor sólo es significativo cuando la llamada devolvió un error (usualmente -1) y cuando una función de biblioteca que acabe bien tenga permitido cambiar errno.

Algunas veces, cuando una función tambíen puede devolver -1 como valor válido, se debe poner errno a cero antes de la llamada, para poder detectar posibles errores.

errno se define en el estándar ISO de C como un lvalor (valor de lado izquierdo) modificable de tipo int y no se debe declarar de forma explícita; errno puede ser una macro. errno es "local en hilo"; asignarle un valor en un hilo no afecta al valor que tenga en ningún otro hilo.

Los números de error válidos son todos no cero; ninguna función de biblioteca asigna nunca un valor cero a errno. Todos los nombres de error especificados por POSIX.1 deben tener valores distintos.

POSIX.1 (edición de 2001) lista los siguientes nombres de error simbólicos. De éstos, EDOM y ERANGE existen en el estándar ISO de C. La enmienda 1 del ISO C define el número de error adicional EILSEQ para codificar los errores en múltiples bytes o caracteres extendidos.

E2BIG
    Lista de argumentos demasiado larga

EACCES
    Permiso denegado

EADDRINUSE
    Dirección en uso

EADDRNOTAVAIL
    Dirección no disponible

EAFNOSUPPORT
    Familia de direcciones no soportada

EAGAIN
    Recurso temporalmente no disponible

EALREADY
    La conexión se encuentra ya en progreso

EBADF
    Descriptor de fichero incorrecto

EBADMSG
    Mensaje incorrecto

EBUSY
    Recurso ocupado

ECANCELED
    Operación cancelada

ECHILD
    No hay procesos hijos

ECONNABORTED
    Conexión abortada

ECONNREFUSED
    Conexión rechazada

ECONNRESET
    Conexión reiniciada

EDEADLK
    Interbloqueo de recurso evitado

EDESTADDRREQ
    Dirección de destino solicitada

EDOM
    Error de dominio

EDQUOT
    Reservado

EEXIST
    El fichero existe

EFAULT
    Dirección incorrecta

EFBIG
    Fichero demasiado grande

EHOSTUNREACH
    El host es inalcanzable

EIDRM
    Identificador eliminado

EILSEQ
    Secuencia ilegal de bytes

EINPROGRESS
    Operación en progreso

EINTR
    Llamada a función interrumpida

EINVAL
    Argumento inválido

EIO Error de Entrada/Salida

EISCONN
    El conector está conectado

EISDIR
    Es un directorio

ELOOP
    Demasiados niveles de enlaces simbólicos

EMFILE
    Demasiados ficheros abiertos

EMLINK
    Demasiados enlaces

EMSGSIZE
    Longitud de buffer de mensaje inapropiada

EMULTIHOP
    Reservado

ENAMETOOLONG
    Nombre de fichero demasiado largo

ENETDOWN
    La red está desactivada

ENETRESET
    Conexión abortada por la red

ENETUNREACH
    Red inalcanzable

ENFILE
    Demasiados ficheros abiertos en el sistema

B ENOBUFS
    Espacio en el buffer no disponible

ENODATA
    No hay mensajes disponibles en la cabeza de la cola de lectura del FLUJO

ENODEV
    No existe tal dispositivo

ENOENT
    No existe ese fichero o directorio

ENOEXEC
    Error en el formato del ejecutable

ENOLCK
    No hay bloqueos disponibles

ENOLINK
    Reservado

ENOMEM
    No hay bastante espacio

ENOMSG
    Ningún mensaje del tipo deseado

ENOPROTOOPT
    Protocolo no disponible

ENOSPC
    No queda espacio en el dispositivo

ENOSR
    No hay recursos de tipo FLUJO

ENOSTR
    No es un FLUJO

ENOSYS
    Función no implementada

ENOTCON
    El conector no está conectado

ENOTDIR
    No es un directorio

ENOTEMPTY
    El directorio no está vacío

ENOTSOCK
    No es un conector

ENOTSUP
    Operación no soportada

ENOTTY
    Operación de control de E/S inapropiada

ENXIO
    No existe tal dispositivo o dirección

EOPNOTSUPP
    Operación no soportada sobre el conector

EOVERFLOW
    Valor demasiado grande para ser almacenado en el tipo de datos

EPERM
    Operación no permitida

EPIPE
    Interconexión rota

EPROTO
    Error de protocolo

EPROTONOSUPPORT
    Protocolo no soportado

EPROTOTYPE
    Tipo de protocolo erróneo para el conector

ERANGE
    Resultado demasiado grande

EROFS
    Sistema de ficheros de sólo lectura

ESPIPE
    Posicionamiento inválido

ESRCH
    No existe tal proceso

ESTALE
    Reservado

ETIME
    Tiempo de espera agotado para el ioctl() sobre el FLUJO

ETIMEDOUT
    La operación ha excedido su plazo de tiempo

ETXTBSY
    Comprobación de fichero ocupada

EWOULDBLOCK
    La operación podría bloquearse (puede ser algun valor como EAGAIN)

EXDEV
    Enlace inapropiado

VÉASE TAMBIÉN
perror(3), strerror(3)