Errno

Un article de Haypo.

(Différences entre les versions)
Version du 4 juillet 2007 à 12:19 (modifier)
Haypo (Discuter | Contributions)
(Liens)
← Différence précédente
Version actuelle (27 juin 2008 à 16:59) (modifier) (défaire)
Haypo (Discuter | Contributions)
(Articles connexes)
 
Ligne 47 : Ligne 47 :
* '''EPIPE''' (32) : Pipe brisé (''Broken pipe'') * '''EPIPE''' (32) : Pipe brisé (''Broken pipe'')
** recv(), send(), read(), write(), ... ** recv(), send(), read(), write(), ...
 +
 +== Liste des erreurs Linux ==
 +
 +Script Python pour afficher les erreurs :
 + import errno
 + errors = [ (getattr(errno, name), name) for name in dir(errno) if name.startswith("E") ]
 + errors.sort(key=lambda (number, name): number)
 + for number, name in errors:
 + print "% 3s: %s" % (number, name)
 +
 +Résultat sous Linux Ubuntu Gutsy :
 +* 1: EPERM
 +* 2: ENOENT
 +* 3: ESRCH
 +* 4: EINTR
 +* 5: EIO
 +* 6: ENXIO
 +* 7: E2BIG
 +* 8: ENOEXEC
 +* 9: EBADF
 +* 10: ECHILD
 +* 11: EAGAIN
 +* 11: EWOULDBLOCK
 +* 12: ENOMEM
 +* 13: EACCES
 +* 14: EFAULT
 +* 15: ENOTBLK
 +* 16: EBUSY
 +* 17: EEXIST
 +* 18: EXDEV
 +* 19: ENODEV
 +* 20: ENOTDIR
 +* 21: EISDIR
 +* 22: EINVAL
 +* 23: ENFILE
 +* 24: EMFILE
 +* 25: ENOTTY
 +* 26: ETXTBSY
 +* 27: EFBIG
 +* 28: ENOSPC
 +* 29: ESPIPE
 +* 30: EROFS
 +* 31: EMLINK
 +* 32: EPIPE
 +* 33: EDOM
 +* 34: ERANGE
 +* 35: EDEADLK
 +* 35: EDEADLOCK
 +* 36: ENAMETOOLONG
 +* 37: ENOLCK
 +* 38: ENOSYS
 +* 39: ENOTEMPTY
 +* 40: ELOOP
 +* 42: ENOMSG
 +* 43: EIDRM
 +* 44: ECHRNG
 +* 45: EL2NSYNC
 +* 46: EL3HLT
 +* 47: EL3RST
 +* 48: ELNRNG
 +* 49: EUNATCH
 +* 50: ENOCSI
 +* 51: EL2HLT
 +* 52: EBADE
 +* 53: EBADR
 +* 54: EXFULL
 +* 55: ENOANO
 +* 56: EBADRQC
 +* 57: EBADSLT
 +* 59: EBFONT
 +* 60: ENOSTR
 +* 61: ENODATA
 +* 62: ETIME
 +* 63: ENOSR
 +* 64: ENONET
 +* 65: ENOPKG
 +* 66: EREMOTE
 +* 67: ENOLINK
 +* 68: EADV
 +* 69: ESRMNT
 +* 70: ECOMM
 +* 71: EPROTO
 +* 72: EMULTIHOP
 +* 73: EDOTDOT
 +* 74: EBADMSG
 +* 75: EOVERFLOW
 +* 76: ENOTUNIQ
 +* 77: EBADFD
 +* 78: EREMCHG
 +* 79: ELIBACC
 +* 80: ELIBBAD
 +* 81: ELIBSCN
 +* 82: ELIBMAX
 +* 83: ELIBEXEC
 +* 84: EILSEQ
 +* 85: ERESTART
 +* 86: ESTRPIPE
 +* 87: EUSERS
 +* 88: ENOTSOCK
 +* 89: EDESTADDRREQ
 +* 90: EMSGSIZE
 +* 91: EPROTOTYPE
 +* 92: ENOPROTOOPT
 +* 93: EPROTONOSUPPORT
 +* 94: ESOCKTNOSUPPORT
 +* 95: EOPNOTSUPP
 +* 96: EPFNOSUPPORT
 +* 97: EAFNOSUPPORT
 +* 98: EADDRINUSE
 +* 99: EADDRNOTAVAIL
 +* 100: ENETDOWN
 +* 101: ENETUNREACH
 +* 102: ENETRESET
 +* 103: ECONNABORTED
 +* 104: ECONNRESET
 +* 105: ENOBUFS
 +* 106: EISCONN
 +* 107: ENOTCONN
 +* 108: ESHUTDOWN
 +* 109: ETOOMANYREFS
 +* 110: ETIMEDOUT
 +* 111: ECONNREFUSED
 +* 112: EHOSTDOWN
 +* 113: EHOSTUNREACH
 +* 114: EALREADY
 +* 115: EINPROGRESS
 +* 116: ESTALE
 +* 117: EUCLEAN
 +* 118: ENOTNAM
 +* 119: ENAVAIL
 +* 120: EISNAM
 +* 121: EREMOTEIO
 +* 122: EDQUOT
== Articles connexes == == Articles connexes ==

Version actuelle

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

[modifier] 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() »).

[modifier] Erreurs courantes

[modifier] 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()

[modifier] Processus

  • ESRCH (3) : Processus inexistant
    • kill()
  • ECHILD (10) : Processus fils inexistant
    • wait(), waitpid()

[modifier] Permission

  • EPERM (1) : Opération interdite (Operation not permitted)
  • EACCES (13) : Permission non accordée (Permission denied)

[modifier] É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)

[modifier] 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(), ...

[modifier] Liste des erreurs Linux

Script Python pour afficher les erreurs :

import errno
errors = [ (getattr(errno, name), name) for name in dir(errno) if name.startswith("E") ]
errors.sort(key=lambda (number, name): number)
for number, name in errors:
    print "% 3s: %s" % (number, name)

Résultat sous Linux Ubuntu Gutsy :

  • 1: EPERM
  • 2: ENOENT
  • 3: ESRCH
  • 4: EINTR
  • 5: EIO
  • 6: ENXIO
  • 7: E2BIG
  • 8: ENOEXEC
  • 9: EBADF
  • 10: ECHILD
  • 11: EAGAIN
  • 11: EWOULDBLOCK
  • 12: ENOMEM
  • 13: EACCES
  • 14: EFAULT
  • 15: ENOTBLK
  • 16: EBUSY
  • 17: EEXIST
  • 18: EXDEV
  • 19: ENODEV
  • 20: ENOTDIR
  • 21: EISDIR
  • 22: EINVAL
  • 23: ENFILE
  • 24: EMFILE
  • 25: ENOTTY
  • 26: ETXTBSY
  • 27: EFBIG
  • 28: ENOSPC
  • 29: ESPIPE
  • 30: EROFS
  • 31: EMLINK
  • 32: EPIPE
  • 33: EDOM
  • 34: ERANGE
  • 35: EDEADLK
  • 35: EDEADLOCK
  • 36: ENAMETOOLONG
  • 37: ENOLCK
  • 38: ENOSYS
  • 39: ENOTEMPTY
  • 40: ELOOP
  • 42: ENOMSG
  • 43: EIDRM
  • 44: ECHRNG
  • 45: EL2NSYNC
  • 46: EL3HLT
  • 47: EL3RST
  • 48: ELNRNG
  • 49: EUNATCH
  • 50: ENOCSI
  • 51: EL2HLT
  • 52: EBADE
  • 53: EBADR
  • 54: EXFULL
  • 55: ENOANO
  • 56: EBADRQC
  • 57: EBADSLT
  • 59: EBFONT
  • 60: ENOSTR
  • 61: ENODATA
  • 62: ETIME
  • 63: ENOSR
  • 64: ENONET
  • 65: ENOPKG
  • 66: EREMOTE
  • 67: ENOLINK
  • 68: EADV
  • 69: ESRMNT
  • 70: ECOMM
  • 71: EPROTO
  • 72: EMULTIHOP
  • 73: EDOTDOT
  • 74: EBADMSG
  • 75: EOVERFLOW
  • 76: ENOTUNIQ
  • 77: EBADFD
  • 78: EREMCHG
  • 79: ELIBACC
  • 80: ELIBBAD
  • 81: ELIBSCN
  • 82: ELIBMAX
  • 83: ELIBEXEC
  • 84: EILSEQ
  • 85: ERESTART
  • 86: ESTRPIPE
  • 87: EUSERS
  • 88: ENOTSOCK
  • 89: EDESTADDRREQ
  • 90: EMSGSIZE
  • 91: EPROTOTYPE
  • 92: ENOPROTOOPT
  • 93: EPROTONOSUPPORT
  • 94: ESOCKTNOSUPPORT
  • 95: EOPNOTSUPP
  • 96: EPFNOSUPPORT
  • 97: EAFNOSUPPORT
  • 98: EADDRINUSE
  • 99: EADDRNOTAVAIL
  • 100: ENETDOWN
  • 101: ENETUNREACH
  • 102: ENETRESET
  • 103: ECONNABORTED
  • 104: ECONNRESET
  • 105: ENOBUFS
  • 106: EISCONN
  • 107: ENOTCONN
  • 108: ESHUTDOWN
  • 109: ETOOMANYREFS
  • 110: ETIMEDOUT
  • 111: ECONNREFUSED
  • 112: EHOSTDOWN
  • 113: EHOSTUNREACH
  • 114: EALREADY
  • 115: EINPROGRESS
  • 116: ESTALE
  • 117: EUCLEAN
  • 118: ENOTNAM
  • 119: ENAVAIL
  • 120: EISNAM
  • 121: EREMOTEIO
  • 122: EDQUOT

[modifier] Articles connexes

[modifier] Liens