ERROR(3) Manuel du programmeur Linux ERROR(3)

error, error_at_line, error_message_count, error_one_per_line, error_print_progname - Fonctions de compte-rendu d'erreurs de la glibc

#include <error.h>
void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *filename,
                   unsigned int linenum, 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().

If status has a nonzero value, then error() calls exit(3) to terminate the program using the given value as the exit status; otherwise it returns after printing the error message.

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)

Cette page fait partie de la publication 5.13 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/.

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 <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.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 Grégoire Scano <gregoire.scano@malloc.fr>

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@lists.debian.org.

22 mars 2021 GNU