errno.h
<errno.h> est l'en-tête de la bibliothèque standard du C, du langage C, qui contient les définitions des macros et des constantes utilisées pour signaler une erreur, ou vérifier s'il y en a une qui s'est produite. Cela se fait à travers des codes d'erreur enregistré dans une variable statique appelé errno
(forme raccourcie de error number)[1].
Une valeur (le code d'erreur) est enregistrée dans errno
par quelques fonctions lorsque celles-ci détectent une erreur. Au démarrage du programme, cette variable contient la valeur zéro. Les fonctions des bibliothèques standard n'y stockent que des valeurs positives. N'importe quelle fonction peut en modifier la valeur au cours de son exécution, si un problème a eu lieu.
Traditionnellement, errno utilisait un emplacement mémoire statique, mais des macros sont presque toujours utilisées de nos jours pour permettre l'usage de multiples threads ; ainsi, chaque thread peut voir ses propres codes d'erreur.
Ce fichier définit également des constantes qui représentent des codes d'erreurs couramment utilisés. La bibliothèque standard du C requiert seulement les trois suivantes :
- EDOM
- Lorsqu'un paramètre donné est hors du domaine de définition de la fonction, par exemple
sqrt(-1)
. - ERANGE
- Résultat d'une fonction hors de son domaine de définition, par exemple
strtol("0xfffffffff",NULL,0)
sur un système avec deslong
de 32 bits. - EILSEQ (Requis depuis l'amendement 1 de 1994 au standard C89)[2]
- Résultat d'une séquence de bytes non autorisée, par exemple
mbstowcs(buf,"\xff", 1)
sur un système basé sur UTF-8.
Des systèmes d'exploitation compatibles POSIX comme Linux, Solaris ou AIX incluent plusieurs autres codes d'erreurs, souvent bien plus utilisés que ceux ci-dessus, comme EACCES qui indique un problème d'ouverture d'un fichier[3].
Voir aussi
[modifier | modifier le code]Notes et références
[modifier | modifier le code]- International Standard for Programming Language C (C99), ISO/IEC 9899:1999, p. 186
- "A brief description of Normative Addendum 1".
errno.h
system error numbers – Base Definitions Reference, The Single UNIX® Specification, Issue 7 from The Open Group
Bibliographie
[modifier | modifier le code]- W. Richard, Stevens; Stephen A., Rago (May 24, 2013). Advanced Programming in the UNIX Environment (Third ed.). Addison-Wesley Professional. (ISBN 978-0321637734). Retrieved 27 February 2015.
Articles connexes
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- Codes errno par plateforme
- FreeBSD System: Error codes
- GNU C library manual: Error codes
- Liste des codes errno sous Linux