Linux |
CentOS 4.8 |
|
strerror_r(3) |
strerror, strerror_r − Obtenir le libellé d’un code d’erreur. |
#include <string.h> char *strerror (int errnum); int strerror_r(int errnum, char *buf, size_t n); |
La fonction strerrror() renvoie une chaîne décrivant 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. Cette chaîne ne doit pas être modifiée par l’application, mais peut être écrasée par un appel ultérieur à perror() ou strerror(). Aucune autre fonction de bibliothèque ne modifie cette chaîne. La fonction strerror_r() est identique à strerror() mais fonctionne correctement dans un environnement multi-threads, puisqu’elle renvoie la chaîne dans le buffer buf de longueur n fourni par l’appelant. |
La fonction strerror() renvoie la description correspondant au code transmis, ou un message d’erreur inconnue si le code n’existe pas. La valeur de errno n’est pas modifiée lors des appels réussi, mais contient une valeur non-nulle en cas d’erreur. La fonction strerror_r() renvoie 0 si elle réussit et −1 sinon, en remplissant errno. |
EINVAL |
La valeur de errnum n’est pas un code d’erreur valide. |
||
ERANGE |
Le buffer fourni n’est pas assez grand. |
SVID 3, POSIX, BSD 4.3, ISO/IEC 9899:1990 (C89). La fonction strerror_r() avec le prototype décrit ci-dessus est spécifiée par SUSv3, et était utilisée sous Digital Unix et HP Unix. Une fonction incompatible, avec le prototype char *strerror_r(int errnum, char *buf, size_t n); était une extension GNU utilisée par la GlibC, et doit être considérée comme obsolète en regard de SUS v3. La version GNU pouvait, sans y être obligée, utiliser le buffer fourni par l’utilisateur. Si elle le faisait, le résultat pouvait être tronqué si le buffer était trop petit. Le résultat était toujours terminé par un NUL. |
errno(3), perror(3), strsignal(3) |
Christophe Blaess, 1997. |
strerror_r(3) |