Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       strerror,  strerrorname_np,  strerrordesc_np,  strerror_r,  strerror_l  -  Obtenir le libellé d'un numéro
       d'erreur

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <string.h>

       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 à XSI */

       char *strerror_r(int errnum, char buf[.buflen], size_t buflen);
                      /* spécifique à GNU */

       char *strerror_l(int errnum, locale_t locale);

   Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

       strerrorname_np(), strerrordesc_np() :
           _GNU_SOURCE

       strerror_r() :
           La version conforme à XSI est fournie si :
               (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE
           Sinon la version spécifique à GNU est fournie.

DESCRIPTION

       La fonction strerror() renvoie un pointeur vers une chaîne qui décrit le code d'erreur passé en  argument
       errnum,  en  utilisant  éventuellement  la  catégorie LC_MESSAGES de la localisation pour sélectionner la
       langue appropriée (par exemple, si errnum  est  EINVAL,  la  description  renvoyée  sera  « Argument  non
       valable »). Cette chaîne ne doit pas être modifiée par l'application, mais peut être écrasée par un appel
       ultérieur  à  strerror()  ou strerror_l(). Aucune autre fonction de bibliothèque, y compris perror(3), ne
       modifie cette chaîne.

       Comme strerror(), la fonction strerrordesc_np() renvoie un pointeur vers une chaîne qui  décrit  le  code
       d’erreur  passé  dans  l’argument errnum, avec comme différence que la chaîne renvoyée n’est pas traduite
       selon la régionalisation en cours.

       La fonction strerrorname_np() renvoie un pointeur vers une chaîne contenant le nom du code d’erreur passé
       dans l’argument errnum. Par exemple, si EPERM  est  donné  comme  argument,  cette  fonction  renvoie  un
       pointeur vers la chaîne « EPERM ».

   strerror_r()
       La  fonction  strerror_r()  est identique à strerror() mais fonctionne correctement dans un environnement
       multithread. Cette fonction est disponible en deux versions : une version  conforme  XSI  spécifiée  dans
       POSIX.1-2001  (disponible  depuis  la  glibc 2.3.4, mais non compatible POSIX avant la glibc 2.13) et une
       version spécifique à GNU (disponible depuis la glibc 2.0). La version compatible XSI est fournie  par  le
       paramétrage  de  la  macro  de  test  mentionnée  dans le SYNOPSIS, sinon la version spécifique à GNU est
       fournie. Si aucune macro de test n'est définie explicitement, alors (depuis la glibc 2.4) _POSIX_C_SOURCE
       est définie par défaut avec la  valeur  200112L,  de  telle  sorte  que  la  version  compatible  XSI  de
       strerror_r() soit fournie par défaut.

       La  version  de  strerror_r()  conforme XSI est préférée pour les applications portables. Elle renvoie la
       chaîne d’erreur dans le tampon buf de longueur buflen fourni par l'appelant.

       La version de strerror_r() spécifique GNU renvoie  un  pointeur  sur  une  chaîne  contenant  le  message
       d'erreur.  Cela  peut  être  soit  un  pointeur  vers une chaîne que la fonction stocke dans buf, soit un
       pointeur vers une chaîne statique (immuable) (auquel cas buf n'est pas utilisé). Si  la  fonction  stocke
       une  chaîne dans buf, au plus buflen octets sont stockés (la chaîne peut être tronquée si buflen est trop
       petit et qu'errnum est inconnu). La chaîne inclut toujours l'octet NULL final (« \0 »).

   strerror_l()
       strerror_l() est semblable à strerror(), mais fait correspondre à errnum un message d'erreur adapté à  la
       localisation  précisée  par  locale.  Le comportement de strerror_l() n'est pas défini si la localisation
       locale est l'objet spécial de localisation LC_GLOBAL_LOCALE ou si elle n'a  pas  une  valeur  valable  de
       localisation.

VALEUR RENVOYÉE

       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 numéro d'erreur est inconnu.

       En cas de succès, strerrorname_np() et strerrordesc_np() renvoient la description correspondante au  code
       transmis. Si errnum est un numéro d'erreur non valable, elles renvoient NULL.

       La  fonction  strerror_r()  conforme  XSI renvoie 0 si elle réussit. En cas d'erreur, un numéro (positif)
       d'erreur est renvoyé (depuis la glibc 2.13), ou -1 est renvoyé et errno est défini pour indiquer l'erreur
       (avant la glibc 2.13).

       POSIX.1-2001 et POSIX.1-2008 exigent qu'un appel réussi de strerror() ou strerror_l()  laisse  errno  non
       modifié.  Remarquez  que,  puisqu'aucune  valeur  de  retour de fonction n'est réservée pour indiquer une
       erreur, une application qui désire vérifier les erreurs devrait initialiser errno à zéro  avant  l'appel,
       et vérifier errno après 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 chaîne de description d’erreur.

VERSIONS

       La fonction strerror_l() est apparue dans la glibc 2.6.

       Les  fonctions  strerrorname_np()  et  strerrordesc_np()  sont  apparues  pour  la  première fois dans la
       version 2.32 de la glibc.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌────────────────────────────┬──────────────────────┬───────────────────────────────────────────────────┐
       │ InterfaceAttributValeur                                            │
       ├────────────────────────────┼──────────────────────┼───────────────────────────────────────────────────┤
       │ strerror()                 │ Sécurité des threads │ MT-Unsafe race:strerror                           │
       ├────────────────────────────┼──────────────────────┼───────────────────────────────────────────────────┤
       │ strerrorname_np(),         │ Sécurité des threads │ MT-Safe                                           │
       │ strerrordesc_np()          │                      │                                                   │
       ├────────────────────────────┼──────────────────────┼───────────────────────────────────────────────────┤
       │ strerror_r(), strerror_l() │ Sécurité des threads │ MT-Safe                                           │
       └────────────────────────────┴──────────────────────┴───────────────────────────────────────────────────┘

STANDARDS

       strerror() est spécifiée par POSIX.1-2001, POSIX.1-2008  et  C99.  strerror_r()  est  spécifiée  par  PO‐
       SIX.1-2001 et POSIX.1-2008.

       strerror_l() est spécifiée dans POSIX.1-2008.

       Les  fonctions strerror_r(), strerrorname_np() et strerrordesc_np() spécifiques à GNU sont des extensions
       non standard.

       POSIX.1-2001 permet à strerror() d'écrire errno si l'appel rencontre une  erreur  mais  ne  spécifie  pas
       quelle  valeur devrait être renvoyée comme résultat de fonction dans l'éventualité d'une erreur. Sur cer‐
       tains systèmes, strerror() renvoie NULL si le numéro d'erreur est inconnu. Sur d'autres, strerror()  ren‐
       voie  une chaîne du style « Error nnn occurred » et écrit EINVAL dans errno si le numéro d'erreur est in‐
       connu. C99 et POSIX.1-2008 exigent que la valeur renvoyée ne soit pas NULL.

NOTES

       La bibliothèque GNU C utilise un tampon de 1024 octets pour strerror(). Cette taille  de  tampon  devrait
       donc être suffisante pour éviter une erreur ERANGE lors d'un appel à strerror_r().

       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)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>, Stéphan Rafin  <stephan.rafin@laposte.net>,  Thierry  Vignaud  <tvi‐
       gnaud@mandriva.com>,  François  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fe‐
       vrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau  <jcristau@de‐
       bian.org>,   Thomas   Huriaux   <thomas.huriaux@gmail.com>,  Nicolas  François  <nicolas.francois@centra‐
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
       Denis  Barbier  <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Frédéric  Hantrais  <fhan‐
       trais@gmail.com>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à  de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                      strerror(3)