strerror(3) Library Functions Manual strerror(3) NOM strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l - Obtenir le libelle d'un numero d'erreur BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include char *strerror(int errnum); const char *strerrorname_np(int errnum); const char *strerrordesc_np(int errnum); int strerror_r(int errnum, char buf[.buflen], size_t buflen); /* conforme a XSI */ char *strerror_r(int errnum, char buf[.buflen], size_t buflen); /* specifique a GNU */ char *strerror_l(int errnum, locale_t locale); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : strerrorname_np(), strerrordesc_np() : _GNU_SOURCE strerror_r() : La version conforme a XSI est fournie si : (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE Sinon la version specifique a GNU est fournie. DESCRIPTION La fonction strerror() renvoie un pointeur vers une chaine qui decrit le code d'erreur passe en argument errnum, en utilisant eventuellement la categorie LC_MESSAGES de la localisation pour selectionner la langue appropriee (par exemple, si errnum est EINVAL, la description renvoyee sera << Argument non valable >>). Cette chaine ne doit pas etre modifiee par l'application, et le pointeur renvoye sera invalide lors d'un appel ulterieur a strerror() ou strerror_l(), ou si le thread qui a obtenu la chaines se termine. Aucune autre fonction de bibliotheque, y compris perror(3), ne modifie cette chaine. Comme strerror(), la fonction strerrordesc_np() renvoie un pointeur vers une chaine qui decrit le code d'erreur passe dans l'argument errnum, avec comme difference que la chaine renvoyee n'est pas traduite selon la regionalisation en cours. La fonction strerrorname_np() renvoie un pointeur vers une chaine contenant le nom du code d'erreur passe dans l'argument errnum. Par exemple, si EPERM est donne comme argument, cette fonction renvoie un pointeur vers la chaine << EPERM >>. Si 0 est donne comme argument, cette fonction renvoie un pointeur vers la chaine << 0 >>. strerror_r() strerror_r() est identique a strerror() mais peut utiliser le tampon buf plutot que d'en allouer un en interne. Cette fonction est disponible en deux versions : une version conforme XSI specifiee dans POSIX.1-2001 (disponible depuis la glibc 2.3.4, mais non compatible POSIX avant la glibc 2.13) et une version specifique a GNU (disponible depuis la glibc 2.0). La version compatible XSI est fournie par le parametrage de la macro de test mentionnee dans le SYNOPSIS, sinon la version specifique a GNU est fournie. Si aucune macro de test n'est definie explicitement, alors (depuis la glibc 2.4) _POSIX_C_SOURCE est definie par defaut avec la valeur 200112L, de telle sorte que la version compatible XSI de strerror_r() soit fournie par defaut. La version de strerror_r() conforme XSI est preferee pour les applications portables. Elle renvoie la chaine d'erreur dans le tampon buf de longueur buflen fourni par l'appelant. The GNU-specific strerror_r() returns a pointer to a string containing the error message. This may be either a pointer to a string that the function stores in buf, or a pointer to some (immutable) static string (in which case buf is unused). If the function stores a string in buf, then at most buflen bytes are stored (the string may be truncated if buflen is too small and errnum is unknown). The string always includes a terminating null byte ('\0'). strerror_l() strerror_l() est semblable a strerror(), mais fait correspondre a errnum un message d'erreur adapte a la localisation precisee par locale. Le comportement de strerror_l() n'est pas defini si la localisation locale est l'objet special de localisation LC_GLOBAL_LOCALE ou si elle n'a pas une valeur valable de localisation. VALEUR RENVOYEE Les fonctions strerror(), strerror_l() et la fonction GNU strerror_r() renvoient la description correspondante au code transmis, ou un message << Unknown error nnn >> si le numero d'erreur est inconnu. En cas de succes, strerrorname_np() et strerrordesc_np() renvoient la description correspondante au code transmis. Si errnum est un numero d'erreur non valable, elles renvoient NULL. La fonction strerror_r() conforme XSI renvoie 0 si elle reussit. En cas d'erreur, un numero (positif) d'erreur est renvoye (depuis la glibc 2.13), ou -1 est renvoye et errno est defini pour indiquer l'erreur (avant la glibc 2.13). POSIX.1-2001 et POSIX.1-2008 exigent qu'un appel reussi de strerror() ou strerror_l() laisse errno non modifie. Remarquez que, puisqu'aucune valeur de retour de fonction n'est reservee pour indiquer une erreur, une application qui desire verifier les erreurs devrait initialiser errno a zero avant l'appel, et verifier errno apres l'appel. ERREURS EINVAL La valeur de errnum n'est pas un code d'erreur valable. ERANGE Le tampon fourni n'est pas assez grand pour la chaine de description d'erreur. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +-------------------+--------------------------+-----------------------+ |Interface | Attribut | Valeur | +-------------------+--------------------------+-----------------------+ |strerror() | Securite des threads | MT-Safe | +-------------------+--------------------------+-----------------------+ |strerrorname_np(), | Securite des threads | MT-Safe | |strerrordesc_np() | | | +-------------------+--------------------------+-----------------------+ |strerror_r(), | Securite des threads | MT-Safe | |strerror_l() | | | +-------------------+--------------------------+-----------------------+ Avant la glibc 2.32, strerror() n'est pas MT-Safe. STANDARDS strerror() C11, POSIX.1-2008. strerror_r() strerror_l() POSIX.1-2008. strerrorname_np() strerrordesc_np() GNU. POSIX.1-2001 permet a strerror() d'ecrire errno si l'appel rencontre une erreur mais ne specifie pas quelle valeur devrait etre renvoyee comme resultat de fonction dans l'eventualite d'une erreur. Sur certains systemes, strerror() renvoie NULL si le numero d'erreur est inconnu. Sur d'autres, strerror() renvoie une chaine du style << Error nnn occurred >> et ecrit EINVAL dans errno si le numero d'erreur est inconnu. C99 et POSIX.1-2008 exigent que la valeur renvoyee ne soit pas NULL. HISTORIQUE strerror() POSIX.1-2001, C89. strerror_r() POSIX.1-2001. strerror_l() glibc 2.6. POSIX.1-2008. strerrorname_np() strerrordesc_np() glibc 2.32: NOTES strerrorname_np() et strerrordesc_np() sont thread-safe et async-signal-safe. VOIR AUSSI err(3), errno(3), error(3), perror(3), strsignal(3), locale(7), signal-safety(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Frederic Hantrais Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.9.1 15 juin 2024 strerror(3)