strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l - Obtenir le
libellé d'un numéro d'erreur
Bibliothèque C standard (
libc,
-lc)
#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);
/* XSI-compliant */
char *strerror_r(int errnum, char buf[.buflen], size_t buflen);
/* GNU-specific */
char *strerror_l(int errnum, locale_t locale);
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.
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 ».
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.
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() 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.
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.
The XSI-compliant
strerror_r() function returns 0 on success. On error, a
(positive) error number is returned (since glibc 2.13), or -1 is returned and
errno is set to indicate the error (before 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.
- 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.
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.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
strerror() |
Sécurité des threads |
MT-Unsafe race:strerror |
strerrorname_np(), strerrordesc_np() |
Sécurité des threads |
MT-Safe |
strerror_r(), strerror_l() |
Sécurité des threads |
MT-Safe |
strerror() is specified by POSIX.1-2001, POSIX.1-2008, and C99.
strerror_r() is specified by POSIX.1-2001 and 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 certains systèmes,
strerror() renvoie NULL si le numéro d'erreur est inconnu. Sur
d'autres,
strerror() renvoie une chaîne du style
« Error nnn occurred » et écrit
EINVAL dans
errno si le numéro d'erreur est inconnu. C99
et POSIX.1-2008 exigent que la valeur renvoyée ne soit pas NULL.
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.
err(3),
errno(3),
error(3),
perror(3),
strsignal(3),
locale(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Frédéric Hantrais <
[email protected]>
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 à
[email protected]