ERRNO(3)

NOM
errno - Code de la dernière erreur

SYNOPSIS
#include <errno.h>

DESCRIPTION
Le fichier d'en-tête <errno.h> définit la variable entière errno, qui est renseignée par les appels système et quelques fonctions de bibliothèque pour décrire les conditions d'erreurs. Sa valeur n'est significative que lorsque la valeur de retour l'appel système indique une erreur (c'est-à-dire -1 pour la plupart des appels système ; -1 ou NULL pour la plupart des fonctions de bibliothèque) ; en cas de réussite une fonction de bibliothèque peut modifier errno. Les numéros d'erreur corrects sont tous non nuls ; errno n'est mis à zéro par aucun appel système ou fonction de bibliothèque. Pour certains appels système et fonctions de bibliothèque (par exemple getpriority(2)), -1 est une valeur de retour correcte en cas de réussite. Dans de tels cas, une valeur de retour en cas de réussite peut être distinguée d'un cas d'erreur en positionnant errno à zéro avant l'appel, puis, quand l'appel fourni une valeur qui indique qu'une erreur a pu se produire, en vérifiant si errno a une valeur non nulle. errno est définie par le standard ISO C comme une « lvalue » modifiable de type int, et n'a pas besoin d'être définie explicitement ; errno peut être une macro. errno est locale à un thread ; lui affecter une valeur dans un thread ne modifie pas sa valeur dans les autres threads. Toutes les erreurs détaillées dans POSIX.1 doivent avoir des valeurs différentes à l'exception de EAGAIN et EWOULDBLOCK qui peuvent avoir la même valeur. Ci-dessous, une liste des noms d'erreurs symboliques qui sont définis sous Linux. Certains sont marqués avec POSIX.1, cela signifie que POSIX.1-2001 les définit, ceux marqués avec C99, sont définis par C99.

E2BIG
    Liste d'arguments trop longue (POSIX.1)

EACCES
    Permission refusée (POSIX.1)

EADDRINUSE
    Adresse déjà en cours d'utilisation (POSIX.1)

EADDRNOTAVAIL
    Adresse non disponible (POSIX.1)

EAFNOSUPPORT
    Famille d'adresses non supportée (POSIX.1)

EAGAIN
    Ressource temporairement indisponible (peut être la même valeur que EWOULDBLOCK) (POSIX.1)

EALREADY
    Connexion déjà en cours (POSIX.1)

EBADE
    Échange invalide

EBADF
    Mauvais descripteur de fichier (POSIX.1)

EBADFD
    Descripteur de fichier dans un mauvais état

EBADMSG
    Mauvais message (POSIX.1)

EBADR
    Descripteur de requête non valable

EBADRQC
    Code de requête non valable

EBADSLT
    Emplacement (« Slot ») non valable

EBUSY
    Périphérique ou ressource indisponible (POSIX.1)

ECANCELED
    Opération annulée (POSIX.1)

ECHILD
    Pas de processus fils (POSIX.1)

ECHRNG
    Numéro de voie hors du domaine de définition

ECOMM
    Échec de la communication lors de l'envoi

ECONNABORTED
    Connexion abandonnée (POSIX.1)

ECONNREFUSED
    Connexion refusée (POSIX.1)

ECONNRESET
    Connexion réinitialisée (POSIX.1)

EDEADLK
    Blocage d'une ressource évité (POSIX.1)

EDEADLOCK
    Synonyme de EDEADLK

EDESTADDRREQ
    Adresse de destination nécessaire (POSIX.1)

EDOM
    Argument mathématique hors du domaine de définition de la fonction (POSIX.1, C99)

EDQUOT
    Quota du disque dépassé (POSIX.1)

EEXIST
    Fichier existant (POSIX.1)

EFAULT
    Mauvaise adresse (POSIX.1)

EFBIG
    Fichier trop grand (POSIX.1)

EHOSTDOWN
    Hôte éteint

EHOSTUNREACH
    Hôte non accessible (POSIX.1)

EIDRM
    Identificateur supprimé (POSIX.1)

EILSEQ
    Séquence d'octets illégale (POSIX.1, C99)

EINPROGRESS
    Opération en cours (POSIX.1)

EINTR
    Appel système interrompu (POSIX.1) ; consultez signal(7).

EINVAL
    Argument invalide (POSIX.1)

EIO Erreur d'entrée/sortie (POSIX.1)

EISCONN
    La socket est connectée (POSIX.1)

EISDIR
    Est un répertoire (POSIX.1)

EISNAM
    Est un fichier nommé

EKEYEXPIRED
    Clé expirée

EKEYREJECTED
    La clé a été rejeté par le service

EKEYREVOKED
    La clé a été révoquée

EL2HLT
    Niveau 2 arrêté

EL2NSYNC
    Niveau 2 non synchronisé

EL3HLT
    Niveau 3 arrêté

EL3RST
    Niveau 3 arrêté

ELIBACC
    Impossible d'accéder à la bibliothèque partagée nécessaire

ELIBBAD
    Accès à une bibliothèque partagée corrompue

ELIBMAX
    Tentative de liaison avec trop de bibliothèques partagées

ELIBSCN
    Section lib dans a.out corrompue

ELIBEXEC
    Impossible d'exécuter directement une bibliothèque partagée

ELOOP
    Trop de niveau de liens symboliques rencontrés (POSIX.1)

EMEDIUMTYPE
    Mauvais type de médium

EMFILE
    Trop de fichiers ouverts (POSIX.1)

EMLINK
    Trop de liens symboliques (POSIX.1)

EMSGSIZE
    Message trop long (POSIX.1)

EMULTIHOP
    Tentative de saut multiple « Multihop » (POSIX.1)

ENAMETOOLONG
    Nom de fichier trop long (POSIX.1)

ENETDOWN
    Le réseau est désactivé (POSIX.1)

ENETRESET
    Connexion annulée par le réseau (POSIX.1)

ENETUNREACH
    Réseau inaccessible (POSIX.1)

ENFILE
    Trop de fichiers ouverts sur le système (POSIX.1)

ENOBUFS
    Plus de tampons disponibles (POSIX.1 (option des FLUX XSI))

ENODATA
    Pas de message disponible en tête de la queue de lecture du FLUX (POSIX.1)

ENODEV
    Périphérique inexistant (POSIX.1)

ENOENT
    Fichier ou répertoire inexistant (POSIX.1)

ENOEXEC
    Erreur de format d'exécution (POSIX.1)

ENOKEY
    Clé nécessaire non disponible

ENOLCK
    Pas de verrou disponible (POSIX.1)

ENOLINK
    Un lien a été disjoint (POSIX.1)

ENOMEDIUM
    Aucun média trouvé

ENOMEM
    Pas assez de mémoire (POSIX.1)

ENOMSG
    Pas de message du type attendu (POSIX.1)

ENONET
    La machine n'est pas sur le réseau

ENOPKG
    Paquet non installé

ENOPROTOOPT
    Protocole indisponible (POSIX.1)

ENOSPC
    Plus de place sur le périphérique (POSIX.1)

ENOSR
    Pas de ressources FLUX (POSIX.1 (option des FLUX XSI))

ENOSTR
    Pas un FLUX (POSIX.1 (option des FLUX XSI))

ENOSYS
    Fonction non implémentée (POSIX.1)

ENOTBLK
    Périphérique de bloc nécessaire

ENOTCONN
    La socket n'est pas connectée (POSIX.1)

ENOTDIR
    Pas un répertoire (POSIX.1)

ENOTEMPTY
    Répertoire non vide (POSIX.1)

ENOTSOCK
    Pas une socket (POSIX.1)

ENOTSUP
    Opération non supportée (POSIX.1)

ENOTTY
    Opération de contrôle d'entrée/sortie invalide (POSIX.1)

ENOTUNIQ
    Le nom sur le réseau n'est pas unique

ENXIO
    Périphérique ou adresse inexistant (POSIX.1)

EOPNOTSUPP
    Opération non supportée par la socket (POSIX.1)

    (ENOTSUP et EOPNOTSUPP ont la même valeur sous Linux, mais selon POSIX.1, ces codes d'erreurs doivent être différents).

EOVERFLOW
    Valeur trop grande pour être sauvé dans ce type de donnée (POSIX.1)

EPERM
    Opération interdite (POSIX.1)

EPFNOSUPPORT
    Famille de protocole non supportée

EPIPE
    Tube cassé (POSIX.1)

EPROTO
    Erreur de protocole (POSIX.1)

EPROTONOSUPPORT
    Protocole non supporté (POSIX.1)

EPROTOTYPE
    Mauvais type de protocole pour la socket (POSIX.1)

ERANGE
    Résultat trop grand (POSIX.1, C99)

EREMCHG
    Adresse distante changée

EREMOTE
    L'objet est distant

EREMOTEIO
    Erreur d'entrées-sorties distante

ERESTART
    L'appel système interrompu devrait être relancé

EROFS
    Système de fichiers en lecture seule (POSIX.1)

ESHUTDOWN
    Impossible d'effectuer l'envoi après l'arrêt du point final du transport

ESPIPE
    Recherche invalide (POSIX.1)

ESOCKTNOSUPPORT
    Type de socket non supporté

ESRCH
    Processus inexistant (POSIX.1)

ESTALE
    Vieux descripteur de fichier (POSIX.1)

    Cette erreur peut se produire avec le système de fichiers NFS et d'autres

ESTRPIPE
    Tube de flux cassé

ETIME
    Compteur de temps écoulé (POSIX.1 (option des FLUX XSI))

    (POSIX.1 dit « délai du FLUX ioctl(2) dépassé)

ETIMEDOUT
    Délai maximal de connexion écoulé (POSIX.1)

ETXTBSY
    Fichier texte occupé (POSIX.1)

EUCLEAN
    La structure nécessite un nettoyage

EUNATCH
    Protocole indisponible

EUSERS
    Trop d'utilisateurs

EWOULDBLOCK
    L'opération serait bloquante (peut être la même valeur que EAGAIN) (POSIX.1)

EXDEV
    Lien inapproprié (POSIX.1)

EXFULL
    Échange plein

NOTES
Une erreur fréquente est de faire
if (somecall() == -1) {
    printf("somecall() failed\n");
    if (errno == ...) { ... }
}
où errno n'a plus besoin de la valeur qu'elle avait juste après le retour de somecall() (par exemple, elle peut être changée par printf(3)). Si la valeur de errno doit être préservée à travers un appel bibliothèque, elle doit être sauvegardée :
if (somecall() == -1) {
    int errsv = errno;
    printf("somecall() failed\n");
    if (errsv == ...) { ... }
}

C'est commun en C traditionnel de déclarer errno manuellement (par exemple, extern int errno) au lieu d'inclure <errno.h>. Ne faites pas cela. Cela ne fonctionnera pas avec les versions modernes des bibliothèque C. Toutefois, sur de (très) vieux systèmes UNIX, il peut ne pas y avoir de <errno.h> et dans ce cas la déclaration est nécessaire.

VOIR AUSSI
err(3), error(3), perror(3), strerror(3)

COLOPHON
Cette page fait partie de la publication 3.70 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».