Errno
Un article de Haypo.
Retour aux articles de programmation
errno est un entier signé (type « int » en C) contenant un code d'erreur. Cette variable est utilisée par certaines fonctions de la libc pour expliquer l'échec d'une fonction. Exemple : la fonction fopen() (ouvrir un fichier) va assigner errno=ENOENT pour indiquer que le fichier qu'on désire ouvrir n'existe pas.
Sous Linux, on peut trouver une liste des codes d'erreurs possibles dans :
- /usr/include/asm-generic/errno-base.h (de 1 à 34)
- /usr/include/asm-generic/errno.h (de 35 à 131)
Sommaire |
Outils en C
La variable « errno » est définie dans l'entête « errno.h ». On peut obtenir la description d'une erreur dans la langue de l'utilisateur avec la fonction « strerror() » (voir aussi la fonction « strerror_r() »). La glib offre la fonction « g_strerror() » (voir aussi « g_strsignal() »).
Erreurs courantes
Fichier
- ENOENT (2) : Fichier inexistant
- open(), fopen(), ...
- EBADF (9) : Numéro de fichier inexistant => erreur grave
- select()
- EEXIST (17) : Le fichier existe déjà
- mkdir()
Processus
- ESRCH (3) : Processus inexistant
- kill()
- ECHILD (10) : Processus fils inexistant
- wait(), waitpid()
Permission
- EPERM (1) : Opération interdite (Operation not permitted)
- EACCES (13) : Permission non accordée (Permission denied)
Épuisement des ressources
- ENOMEM (12) : Épuisement de toute la mémoire vive
- ENOSPC (28) : Espace disque épuisé / disque dur plein (No space left on device)
Divers
- EINTR (4) : Appel système interrompu : on peut ignorer cette erreur et réessayer l'appel
- select() peut déclancher une telle erreur
- EINVAL (22) : Argument invalide
- EPIPE (32) : Pipe brisé (Broken pipe)
- recv(), send(), read(), write(), ...