Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Codes d'erreur POSIX de <errno.h>

Le type errno_t


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.
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.
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.

Exemple de code

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;
}
Exemple d'utilisation d'un code POSIX

Voici un exemple de résultat produit par ce programme.

No such file or directory

Sujets connexes

errno
strerror
perror


Le type errno_t




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé