RAISE |
Signal |
---|---|
Langage C | signal.h |
Syntaxe
int raise(int signal); |
Paramètres
Nom | Description |
---|---|
signal | Ce paramètre permet d'indiquer le code de signal à envoyer |
Description
Cette fonction envoi un signal programme s'exécutant.
Algorithme
MODULE RAISE(sig) * Vérifier si le signal est valide SI sig est invalide ALORS * Erreur de paramètre errno ← EINVAL RETOURNE -1 FIN SI * Chercher un gestionnaire de signal pour ce signal handler ← get_signal_handler(sig) * Si un gestionnaire est défini, l'appeler SI handler ≠ NULL ALORS * Appeler le gestionnaire du signal handler(sig) SINON * Si aucun gestionnaire n'est défini, appliquer le comportement par défaut SI sig = SIGINT ALORS * Par exemple, terminer le programme terminate_program() SINON SI sig = SIGSEGV ALORS * Par exemple, terminaison avec erreur terminate_program_with_error() FIN SI * Ajouter des cas pour d'autres signaux si nécessaire FIN SI * Retourner 0 pour indiquer que le signal a été envoyé RETOURNE 0 |
Remarques
- Gestion des signaux : La fonction raise est utilisée pour envoyer un signal à un processus. Elle est définie dans la bibliothèque standard signal.h. Un signal est une forme de communication inter-processus qui permet de notifier à un programme qu'un événement particulier a eu lieu, tel qu'une erreur ou une demande de terminaison.
- Retour de la fonction : La fonction raise retourne 0 si le signal a été envoyé avec succès, et -1 en cas d'échec. En cas d'échec, la fonction définit errno avec un code d'erreur pouvant fournir plus de détails sur la raison de l'échec. Cela permet de vérifier si l'envoi du signal a réussi ou non.
- Utilisation pour la gestion des erreurs : raise est souvent utilisée dans les programmes pour simuler l'envoi de signaux, notamment dans la gestion des erreurs. Par exemple, un programme peut envoyer un signal SIGFPE (erreur arithmétique) pour indiquer un calcul invalide, ou SIGSEGV pour simuler une erreur de segmentation, ce qui peut être utile pour tester la gestion des signaux dans les programmes.
- Système de gestion des signaux : Lorsqu'un signal est envoyé via raise, le système d'exploitation détermine la manière dont le processus va réagir à ce signal. Cela peut être un comportement par défaut (par exemple, terminer le processus), un gestionnaire de signal personnalisé si le programme en a défini un, ou simplement l'ignorance du signal.
- Signaux de processus dans un même programme : raise envoie un signal uniquement au processus appelant, et non à d'autres processus. Cela signifie qu'un programme peut envoyer un signal à lui-même pour déclencher un traitement particulier ou provoquer une erreur spécifique. Si un processus souhaite envoyer un signal à un autre processus, il doit utiliser des fonctions comme kill.
- Tests et débogage : raise est couramment utilisée dans le cadre de tests ou de débogage de programmes pour simuler des signaux et tester la gestion des exceptions et des erreurs. Par exemple, un développeur peut simuler un signal SIGSEGV pour voir comment l'application réagit lorsqu'un accès mémoire invalide se produit.
- Comportement des signaux : Le comportement de raise dépend du signal envoyé et du gestionnaire de signaux que le programme a configuré (s'il y en a un). Par exemple, si un programme reçoit SIGINT (interruption), il peut être configuré pour intercepter ce signal et exécuter une action spécifique (comme enregistrer un journal) au lieu de terminer immédiatement. L'appel à raise permet donc de tester ou de manipuler ces comportements.
Voir également
Langage de programmation - C - Référence de procédures et fonctions - abort
Langage de programmation - C - Référence de procédures et fonctions - signal
Langage de programmation - C++ - Référence de procédures et fonctions - raise
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 205.
Dernière mise à jour : Mardi, le 28 juillet 2015