PERROR |
Processus d'erreur |
---|---|
Langage C++ | cstdlib (stdlib.h) |
Syntaxe
void perror(const char *message) |
Paramètres
Nom | Description |
---|---|
message | Ce paramètre permet d'indiquer le message à envoyer sur la sortie standard d'erreur. |
Description
Cette fonction permet d'envoyer un message d'erreur sur la sortie standard d'erreur.
Remarques
- La fonction perror() cartographie la valeur de la variable globale errno sur une chaîne de caractères et écrit cette chaîne de caractères dans stderr (sortie d'erreur standard). Si la valeur de message n'est pas null, elle est écrite en premier, suivie de deux points, puis du message d'erreur défini par la mise en oeuvre.
- Si vous souhaitez signaler un erreur au niveau de l'analyse du préprocesseur du compilateur, vous devez plutôt utiliser la directive de compilation «#error».
- Définition et utilité : La fonction perror est définie dans la bibliothèque <cstdio> (ou <stdio.h> en C) et permet d'afficher un message d'erreur sur la sortie standard (habituellement la console). Elle est principalement utilisée pour afficher des messages d'erreur liés aux appels systèmes ou aux fonctions de la bibliothèque standard qui échouent, en ajoutant une description texte de l'erreur obtenue à partir de la variable globale errno.
- Rôle de errno : perror utilise la variable globale errno, étant définie dans la bibliothèque <cerrno>. Chaque fois qu'une fonction système échoue, errno est mis à jour pour indiquer le type d'erreur ayant eu lieu. perror va chercher cette valeur et afficher une chaîne de caractères correspondant à cette erreur. Cela permet aux programmeurs de savoir pourquoi un appel système ou une fonction a échoué.
- Affichage de l'erreur : Lorsque perror est appelée, elle combine la chaîne de caractères fournie dans str (s'il y en a une) avec une description textuelle de l'erreur correspondant à errno. Par exemple, si une erreur de lecture ou d'écriture de fichier se produit (avec errno égal à EIO pour une erreur d'entrée/sortie), perror pourrait afficher un message comme "Erreur de lecture : Erreur d'entrée/sortie". Cela aide à comprendre rapidement le contexte de l'erreur.
- Utilisation avec des appels système : perror est couramment utilisée dans des programmes effectuant des appels système, comme l'ouverture de fichiers avec open, ou la gestion de processus avec des fonctions telles que fork. Ces fonctions peuvent échouer pour diverses raisons (par exemple, fichier introuvable, permission refusée,...), et perror permet de communiquer l'erreur de manière détaillée aux développeurs.
- Gestion des erreurs système et non système : Bien que perror soit principalement utilisée pour afficher des erreurs liées aux appels système, elle peut également être utilisée dans un contexte plus large, comme l'affichage d'erreurs non systémiques. Cependant, il est important de noter que perror affiche uniquement les erreurs liées à errno. Si errno n'est pas mis à jour, elle ne pourra pas afficher un message d'erreur approprié, même si une erreur s'est produite dans une fonction.
- Précautions sur l'utilisation de errno : Il est essentiel de comprendre que errno est global et peut être modifié par diverses fonctions du système. Avant d'appeler perror, il est donc préférable de vérifier immédiatement après l'échec d'un appel système ou d'une fonction qui met à jour errno. Si errno est modifié par une autre fonction après une erreur, la valeur initiale d'errno pourrait être écrasée, rendant le message d'erreur moins précis.
- Limites et alternatives : Bien que perror soit utile pour afficher des messages d'erreur simples, elle a quelques limitations. Elle affiche le message d'erreur uniquement sur stderr et n'offre pas de mécanisme pour personnaliser complètement le format de l'erreur. Pour des messages d'erreur plus détaillés ou dans un format spécifique, les développeurs peuvent préférer utiliser des bibliothèques tierces comme std::exception ou créer leur propre gestion d'erreur. Toutefois, perror reste une option simple et efficace pour les erreurs liées aux appels systèmes standards.
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - clearerr
Langage de programmation - C++ - Référence de procédures et fonctions - freopen
Langage de programmation - C++ - Référence de procédures et fonctions - strerror
Langage de programmation - C - Référence de procédures et fonctions - perror
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 733.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 189.
Dernière mise à jour : Lundi, le 3 août 2015