error, error_at_line, error_message_count, error_one_per_line,
error_print_progname - Fonctions de compte-rendu d'erreurs de la glibc
Bibliothèque C standard (
libc,
-lc)
#include <error.h>
void error(int statut, int numerr, const char *format, ...);
void error_at_line(int statut, int numerr, const char *nomfichier,
unsigned int numligne, const char *format, ...);
extern unsigned int error_message_count;
extern int error_one_per_line;
extern void (*error_print_progname)(void);
error() est une fonction générique de rapport d'erreurs.
Elle vide
stdout et affiche sur
stderr, le nom du programme, un
caractère deux-points, une espace, le message spécifié
par la chaîne
format dans le format
printf(3) et si
numerr est différent de zéro, un second caractère
deux-points, une espace suivie du contenu de
strerror(numerr). Tout
argument de
format doit suivre
format dans la liste des
arguments. L'affichage se termine par un retour à la ligne.
Le nom du programme affiché par
error() est la valeur de la
variable globale
program_invocation_name(3).
program_invocation_name est initialisée à la même
valeur que l'argument
argv[0] de la fonction
main(). La valeur
de cette variable peut être modifiée pour changer l'affichage de
error().
Si
statut possède une valeur non nulle, alors
error()
appelle
exit(3) afin de terminer le programme avec la valeur de retour
donnée. Sinon il renvoie après avoir affiché le message
d'erreur.
La fonction
error_at_line() est identique à
error()
excepté les arguments supplémentaires
nomfichier et
numligne. L'affichage produit est similaire à celui de
error() excepté qu'après le nom du programme sont
écrits « : », la valeur de
nomfichier, « : » et la valeur de
numligne. Les paramètres
__LINE__ et
__FILE__ du
préprocesseur peuvent être utiles lors de l'utilisation de
error_at_line(), mais d'autres valeurs peuvent aussi être
utilisées. Par exemple, ces arguments peuvent faire
référence à l'emplacement dans un fichier
d’entrée.
Si la variable globale
error_one_per_line est définie à une
valeur non nulle, une séquence d'appels à
error_at_line()
avec les mêmes valeurs de
nomfichier et
numligne ne
produira qu'un seul message de sortie (le premier).
La variable globale
error_message_count compte le nombre de messages qui
ont été affichés avec
error() et
error_at_line().
Si la variable globale
error_print_progname est assignée à
l'adresse d'une fonction (c'est-à-dire, différent de NULL),
alors cette fonction est appelée au lieu de préfixer le message
avec le nom du programme et « : ». La fonction
doit afficher une chaîne adaptée sur
stderr.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
error() |
Sécurité des threads |
MT-Safe locale |
error_at_line() |
Sécurité des threads |
MT-Unsafe race: error_at_line/error_one_per_line locale |
La variable interne
error_one_per_line est accédée (sans
aucune forme de synchronisation mais, puisque c'est un
int qui n'est
utilisé qu'une seule fois, de façon plutôt sûre)
et si
error_one_per_line n'est pas défini à zéro,
les variables internes statiques (pas exposées à l'utilisateur)
utilisées pour stocker le dernier nom de fichier affiché ainsi
que le numéro de ligne sont accédées et modifiées
sans synchronisation ; la mise à jour n'est pas atomique et
survient avant la désactivation de l'annulation et peut donc
être interrompue seulement après qu'une des deux variables soit
modifiée. Après cela,
error_at_line() est très
similaire à
error().
Ces fonctions et ces variables sont des extensions GNU et ne doivent pas
être utilisées pour des applications portables.
err(3),
errno(3),
exit(3),
perror(3),
program_invocation_name(3),
strerror(3)
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
Grégoire Scano <
[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]