Errno
Un article de Haypo.
Catégorie:Programmation
 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(), ...
 
 

