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
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 | 
[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
 

