errno - Code de la dernière erreur.
La variable entière
errno
est renseignée par les appels systèmes (et quelques fonctions de bibliothèque)
pour expliquer les conditions d'erreurs. Sa valeur n'est significative que
lorsque l'appel système a échoué (généralement en renvoyant -1), car même en
cas de réussite une fonction de bibliothèque peut modifier
errno.
Parfois, si -1 est une valeur de retour légale, il faut positionner
errno
à 0 avant d'effectuer l'appel système, de manière à détecter une erreur
éventuelle. C'est le cas par exemple de
getpriority(2).
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.
Les codes d'erreurs valides sont tous non-nuls.
errno
n'est jamais mis à zéro par une fonction de la bibliothèque.
Toutes les erreurs détaillées dans POSIX.1 doivent avoir des
valeurs différents.
POSIX.1 (édition 2001) définit les noms symboliques ci-dessous
pour les codes d'erreurs. Parmi eux,
EDOM et
ERANGE
sont également dans le standard C ISO. L'amendement 1 au standard
C ISO définit également le code d'erreur
EILSEQ pour les
erreurs de codage dans les caractères étendus, ou multi-octets.
- E2BIG
-
Liste d'arguments trop longue.
- EACCES
-
Interdiction d'accès.
- EADDRINUSE
-
Adresse déjà en cours d'utilisation.
- EADDRNOTAVAIL
-
Adresse non disponible.
- EAFNOSUPPORT
-
Famille d'adresses non supportée.
- EAGAIN
-
Ressource indisponible temporairement
- EALREADY
-
Connexion déjà en cours.
- EBADF
-
Mauvais descripteur de fichier.
- EBADMSG
-
Mauvais message.
- EBUSY
-
Ressource occupée.
- ECANCELED
-
Opération annulée.
- ECHILD
-
Pas de processus fils.
- ECONNABORTED
-
Connexion abandonnée.
- ECONNREFUSED
-
Connexion refusée.
- ECONNRESET
-
Connexion réinitialisée.
- EDEADLK
-
Blocage d'une ressource évité.
- EDESTADDRREQ
-
Adresse de destination nécessaire.
- EDOM
-
Erreur de domaine.
- EDQUOT
-
Réservé
- EEXIST
-
Fichier existant.
- EFAULT
-
Mauvais adresse.
- EFBIG
-
Fichier trop grand.
- EHOSTUNREACH
-
Hôte non accessible.
- EIDRM
-
Identificateur de ressource supprimé.
- EILSEQ
-
Séquence d'octets illégale.
- EINPROGRESS
-
Opération en cours.
- EINTR
-
Appel système interrompu.
- EINVAL
-
Argument invalide.
- EIO
-
Erreur d'entrée/sortie.
- EISCONN
-
La socket est connectée.
- EISDIR
-
Est un répertoire.
- ELOOP
-
Trop de liens symboliques rencontrés.
- EMFILE
-
Trop de fichiers ouverts.
- EMLINK
-
Trop de liens symboliques.
- EMSGSIZE
-
Longueur du buffer de message inappropriée.
- EMULTIHOP
-
Réservé.
- ENAMETOOLONG
-
Nom de fichier trop long.
- ENETDOWN
-
Le réseau est désactivé.
- ENETRESET
-
Connexion annulée par le réseau.
- ENETUNREACH
-
Réseau inaccessible.
- ENFILE
-
Trop de fichiers ouverts sur le système.
- ENOBUFS
-
Plus de buffers disponibles.
- ENODATA
-
Pas de message disponible dans la file STREAM.
- ENODEV
-
Périphérique inexistant.
- ENOENT
-
Fichier ou répertoire inexistant.
- ENOEXEC
-
Exécution impossible.
- ENOLCK
-
Pas de verrou disponible.
- ENOLINK
-
Réservé.
- ENOMEM
-
Pas assez de mémoire.
- ENOMSG
-
Pas de message du type attendu.
- ENOTPROTOOPT
-
Protocole indisponible.
- ENOSPC
-
Plus de place sur le périphérique.
- ENOSR
-
Pas de ressource STREAM.
- ENOSTR
-
Pas un STREAM.
- ENOSYS
-
Fonction non implémentée.
- ENOTCON
-
La socket n'est pas connectée.
- ENOTDIR
-
Pas un répertoire.
- ENOTEMPTY
-
Répertoire non vide.
- ENOTSOCK
-
Pas une socket.
- ENOTSUP
-
Opération non supportée.
- ENOTTY
-
Opération de contrôle d'Entrée/Sortie invalide.
- ENXIO
-
Périphérique ou adresse inexistant.
- EOPNOTSUPP
-
Opération non supportée par la socket.
- EOVERFLOW
-
Valeur trop grande pour le type de donnée.
- EPERM
-
Opération interdite.
- EPIPE
-
Tube sans lecteur.
- EPROTO
-
Erreur de protocole.
- EPROTONOSUPPORT
-
Protocole non supporté.
- EPROTOTYPE
-
Mauvais type de protocole pour la socket.
- ERANGE
-
Résultat trop grand.
- EROFS
-
Système de fichiers en lecture-seule.
- ESPIPE
-
Recherche invalide.
- ESRCH
-
Processus inexistant.
- ESTALE
-
Réservé.
- ETIME
-
Dépassement du délai ioctl() STREAM.
- ETIMEDOUT
-
Délai maximal écoulé.
- ETXTBSY
-
Fichier exécutable occupé.
- EWOULDBLOCK
-
L'opération serait bloquant (même valeur que
EAGAIN)
- EXDEV
-
Lien inapproprié.
Christophe Blaess, 1996-2003.