La norme C ISO ne définit que quelques codes d'erreur dans <errno.h>. POSIX complète cette liste avec des codes
très utilisés par les appels système, les sockets, les fichiers, les threads et plusieurs services Unix/Linux.
Les valeurs numériques ne doivent jamais être codées en dur : elles dépendent de l'implémentation. Le code source doit manipuler les noms
symboliques, par exemple EACCES, EINVAL ou ENOENT.
| Nom | Description |
|---|---|
E2BIG |
Liste d'arguments trop longue. |
EACCES |
Permission refusée. |
EADDRINUSE |
Adresse déjà utilisée. |
EADDRNOTAVAIL |
Adresse non disponible. |
EAFNOSUPPORT |
Famille d'adresses non supportée. |
EAGAIN |
Ressource temporairement indisponible : l'opération pourra éventuellement réussir plus tard. |
EALREADY |
Connexion déjà en cours. |
EBADF |
Mauvais descripteur de fichier. |
EBADMSG |
Message incorrect. |
EBUSY |
Ressource ou périphérique occupé. |
ECANCELED |
Opération annulée. |
ECHILD |
Aucun processus fils. |
ECONNABORTED |
Connexion abandonnée. |
ECONNREFUSED |
Connexion refusée. |
ECONNRESET |
Connexion réinitialisée. |
EDEADLK |
Un interblocage de ressources se produirait. |
EDESTADDRREQ |
Adresse de destination requise. |
EDQUOT |
Réservé par POSIX. |
EEXIST |
Le fichier existe déjà. |
EFAULT |
Adresse mémoire invalide. |
EFBIG |
Fichier trop volumineux. |
EHOSTUNREACH |
Hôte inaccessible. |
EIDRM |
Identifiant supprimé. |
EINPROGRESS |
Opération en cours. |
EINTR |
Fonction interrompue. |
EINVAL |
Argument invalide. |
EIO |
Erreur d'entrée/sortie. |
EISCONN |
Le socket est connecté. |
EISDIR |
Il s'agit d'un répertoire. |
ELOOP |
Trop de niveaux de liens symboliques. |
EMFILE |
Trop de descripteurs de fichiers ouverts pour le processus. |
EMLINK |
Trop de liens physiques. |
EMSGSIZE |
Message trop volumineux. |
EMULTIHOP |
Réservé par POSIX. |
ENAMETOOLONG |
Nom de fichier trop long. |
ENETDOWN |
Le réseau est indisponible. |
ENETRESET |
Connexion abandonnée par le réseau. |
ENETUNREACH |
Réseau inaccessible. |
ENFILE |
Trop de fichiers ouverts dans le système. |
ENOBUFS |
Aucun espace tampon disponible. |
ENODEV |
Aucun périphérique de ce type. |
ENOENT |
Aucun fichier ou répertoire de ce nom. |
ENOEXEC |
Format de fichier exécutable incorrect. |
ENOLCK |
Aucun verrou disponible. |
ENOLINK |
Réservé par POSIX. |
ENOMEM |
Espace mémoire insuffisant. |
ENOMSG |
Aucun message du type souhaité. |
ENOPROTOOPT |
Option de protocole non disponible. |
ENOSPC |
Plus d'espace disponible sur le périphérique. |
ENOSYS |
Fonctionnalité non supportée. |
ENOTCONN |
Le socket n'est pas connecté. |
ENOTDIR |
Ce n'est pas un répertoire, ni un lien symbolique vers un répertoire. |
ENOTEMPTY |
Répertoire non vide. |
ENOTRECOVERABLE |
État non récupérable. |
ENOTSOCK |
Ce n'est pas un socket. |
ENOTSUP |
Opération ou valeur non supportée. |
ENOTTY |
Opération de contrôle d'entrée/sortie inappropriée. |
ENXIO |
Aucun périphérique ou aucune adresse de ce type. |
EOPNOTSUPP |
Opération non supportée sur un socket. |
EOVERFLOW |
Valeur trop grande pour être stockée dans le type de données. |
EOWNERDEAD |
Le propriétaire précédent est mort. |
EPERM |
Opération non permise. |
EPIPE |
Tube brisé. |
EPROTO |
Erreur de protocole. |
EPROTONOSUPPORT |
Protocole non supporté. |
EPROTOTYPE |
Type de protocole incorrect pour le socket. |
EROFS |
Système de fichiers en lecture seule. |
ESOCKTNOSUPPORT |
Type de socket non supporté. |
ESPIPE |
Déplacement invalide. |
ESRCH |
Aucun processus de ce type. |
ESTALE |
Réservé par POSIX. |
ETIMEDOUT |
Connexion expirée. |
ETXTBSY |
Fichier texte occupé. |
EWOULDBLOCK |
L'opération bloquerait. |
EXDEV |
Lien physique incorrect entre systèmes de fichiers. |
POSIX autorise certaines constantes à partager la même valeur numérique. C'est notamment le cas de EAGAIN et
EWOULDBLOCK, ainsi que de ENOTSUP et EOPNOTSUPP.
Le programme suivant récupère le message textuel associé à un code d'erreur POSIX.
1 2 3 4 5 6 7 8 9 10 |
#include <errno.h> #include <stdio.h> #include <string.h> int main() { printf( "%s\n", strerror( ENOENT ) ); return 0; } |
Voici un exemple de résultat produit par ce programme.
No such file or directory
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :