Errno

Un article de Haypo.

Version du 4 juillet 2007 à 12:19 par Haypo (Discuter | Contributions)
(diff) ← Version précédente | voir la version courante (diff) | Version suivante → (diff)

Retour à la page précédente 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(), ...

Articles connexes

Liens