Avec la programmation système, nous allons étudier et manipuler tout ce qui touche à votre système d'exploitation.
Ainsi, nous devrons faire face assez souvent à des codes d'erreurs. La gestion des erreurs est donc un élément primordial dans la programmation système.
La variable globale errno
Pour signaler une erreur, les fonctions renvoient une valeur spéciale, indiquée dans leur documentation. Celle-ci est généralement
-1 (sauf pour quelques exceptions). La valeur d'erreur alerte l'appelant de la survenance d'une erreur, mais elle ne fournit pas la description de ce qui s'est produit. La variable globale
errno est alors utilisée pour en trouver la cause.
Cette variable est définie dans
<errno.h> comme suit :
Code : C | #include <errno.h>
extern int errno;
|
Sa valeur est valable uniquement juste après l'utilisation de la fonction que l'on veut tester. En effet, si on utilise une autre fonction entre le retour que l'on veut tester et l'exploitation de la variable de
errno, la valeur de
errno peut être modifiée entre temps.
A chaque valeur possible de
errno correspond une constante du préprocesseur. Pour les connaître, je vous conseille de taper la commande
man errno. Une description de chaque erreur y est disponible (en anglais !

). Bon, allez, je suis sympa, je vous donne une page de man avec les principales erreurs, en français :
ici.
La fonction perror
La bibliothèque C met également à notre disposition une fonction permettant d'associer à l'utilisation d'une fonction une description de l'erreur (si il y en a eu une) qui s'est produite. Cette fonction, la voici :
Code : C | #include <stdio.h>
void perror(const char *s);
|
Cette fonction affiche sur
stderr (sortie d'erreur standard) une représentation en une chaîne de caractère de l'erreur décrite par errno, précédée par la chaîne de caractère pointée par
s ainsi que d'un espace.
Par convention, le nom de la fonction qui a produit cette erreur doit être inclus dans la chaîne. Par exemple :
Exemple :
Code : C | if (fork() == -1) {
perror("fork");
}
|