NOM
strerror, strerror_r, strerror_l - Obtenir le libellé d’un numéro d’erreur
SYNOPSIS
#include <string.h>
char *strerror(int errnum);
int
strerror_r(int errnum, char
*buf, size_t buflen);
/* conforme XSI */
char
*strerror_r(int errnum, char
*buf, 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)) :
strerror_r():
La version compatible XSI est
fournie si :
(_POSIX_C_SOURCE >= 200112L) && !
_GNU_SOURCE
Autrement, c’est la version GNU qui 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 invalide »). 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.
strerror_r()
The strerror_r() function is similar to
strerror(), but is thread safe. This function is
available in two versions: an XSI-compliant version
specified in POSIX.1-2001 (available since glibc 2.3.4, but
not POSIX-compliant until glibc 2.13), and a GNU-specific
version (available since glibc 2.0). The XSI-compliant
version is provided with the feature test macros settings
shown in the SYNOPSIS; otherwise the GNU-specific version is
provided. If no feature test macros are explicitly defined,
then (since glibc 2.4) _POSIX_C_SOURCE is defined by
default with the value 200112L, so that the XSI-compliant
version of strerror_r() is provided by default.
La version de strerror_r() conforme XSI est préférée pour les applications portables. Elle renvoie la chaîne 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 nul 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 la la
localisation locale est l’objet de localisation
spécial LC_GLOBAL_LOCALE ou si elle n’a
pas la valeur d’une localisation valide.
VALEUR RENVOYÉE
Les fonction strerror(), strerror_l() et la fonction GNU strerror_r() renvoient la description correspondant au code transmis, ou un message « Unknown error nnn » si le numéro d’erreur n’existe pas.
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éfinit pour indiquer l’erreur (pour les version de la glibc antérieures à 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 d’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 valide. | ||
ERANGE |
Le tampon fourni n’est pas assez grand. |
VERSIONS
La fonction strerror_l() est apparue dans la glibc 2.6.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
CONFORMITÉ
strerror() est spécifiée par POSIX.1-2001, POSIX.1-2008, C89 et C99. strerror_r() est spécifiée par POSIX.1-2001 et POSIX.1-2008.
strerror_l() est spécifiée dans POSIX.1-2008.
La fonction strerror_r() spécifique GNU n’est pas une extension standard.
POSIX.1-2001 permet à strerror() d’écrire errno si l’appel rencontre une erreur mais ne spécifie pas quelle valeur devrait être retourné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.
NOTES
The GNU C Library uses a buffer of 1024 characters for strerror(). This buffer size therefore should be sufficient to avoid an ERANGE error when calling strerror_r().
VOIR AUSSI
err(3), errno(3), error(3), perror(3), strsignal(3), locale(7)
COLOPHON
Cette page fait partie de la publication 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l’adresse https://www.kernel.org/doc/man-pages/.
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 [AT] laposte.net>, Thierry Vignaud <tvignaud [AT] mandriva.com>, François Micaux, Alain Portal <aportal [AT] univ-montp2.fr>, Jean-Philippe Guérard <fevrier [AT] tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon [AT] wanadoo.fr>, Julien Cristau <jcristau [AT] debian.org>, Thomas Huriaux <thomas.huriaux [AT] gmail.com>, Nicolas François <nicolas.francois [AT] centraliens.net>, Florentin Duneau <fduneau [AT] gmail.com>, Simon Paillard <simon.paillard [AT] resel.fr>, Denis Barbier <barbier [AT] debian.org>, David Prévot <david [AT] tilapin.org> et Frédéric Hantrais <fhantrais [AT] 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 à <debian-l10n-french [AT] lists.org>.