Errno
Un article de Haypo.
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 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