RAISE |
Signal |
---|---|
Langage C++ | csignal (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 permet d'envoyer un signal de programme s'exécutant.
Remarques
- La fonction raise() envoie le signal spécifié par signal au programme en cours d'exécution. Il renvoie zéro en cas de succès et différent de zéro sinon. Il utilise l'entête «csignal».
- Les signaux suivants sont définis par la norme C++. Bien sûr, la marque du compilateur est libre de fournir des signaux supplémentaires :
- Définition et utilité : La fonction raise est définie dans la bibliothèque <csignal> (ou <signal.h>) et permet d'envoyer un signal à l'exécution du programme. Le principal usage de raise est d'envoyer un signal (par exemple, pour générer des interruptions ou des exceptions simulées) à un programme en cours d'exécution, permettant de déclencher des comportements particuliers, comme l'arrêt du programme ou le traitement d'erreurs.
- Comportement du signal envoyé : Lorsque vous utilisez raise pour envoyer un signal, le comportement du programme dépend du signal lui-même et du gestionnaire de signaux défini pour ce signal. Par exemple, un signal SIGINT par défaut termine le programme, tandis qu'un signal SIGUSR1 pourrait être géré par un gestionnaire de signaux personnalisé pour effectuer des actions spécifiques, comme la journalisation ou l'envoi d'un message d'erreur.
- Personnalisation des signaux : Il est possible de personnaliser le comportement d'un programme lorsqu'il reçoit un signal en définissant des gestionnaires de signaux à l'aide de la fonction signal(). Par exemple, si vous souhaitez que votre programme réagisse de manière spécifique à un signal SIGINT, vous pouvez définir un gestionnaire de signaux qui empêche l'arrêt du programme et affiche un message à la place. Ce mécanisme est essentiel pour gérer proprement les erreurs ou les interruptions dans des programmes complexes.
- Limites de raise : Bien que raise permette d'envoyer des signaux à l'exécution, elle ne peut pas être utilisée pour interagir directement avec des signaux non pris en charge par le système ou pour envoyer des signaux à d'autres processus (dans ce cas, il faudrait utiliser des fonctions comme kill() pour envoyer un signal à un autre processus). De plus, certains signaux sont automatiquement ignorés par défaut, et pour qu'un signal ait un effet, un gestionnaire ou un comportement par défaut doit être défini.
- Utilisation avec les exceptions : raise est souvent utilisée dans un contexte où des erreurs doivent être signalées par des exceptions simulées, par exemple, dans les cas où un programme ne peut pas poursuivre son exécution normale (par exemple, une erreur fatale). Toutefois, elle n'est pas directement liée aux exceptions C++ classiques (comme celles gérées avec throw et catch). Il est possible d'utiliser les deux en parallèle, mais le système de gestion des exceptions C++ et les signaux sont deux mécanismes distincts de gestion des erreurs.
- Portabilité et comportement spécifique au système : Le comportement de raise peut être différent d'un système d'exploitation à l'autre. Par exemple, certains signaux peuvent ne pas être supportés sur toutes les plateformes, ou le traitement des signaux pourrait varier. Par conséquent, l'utilisation de raise nécessite de bien comprendre comment les signaux sont gérés sur le système cible pour garantir un comportement cohérent et éviter des erreurs d'exécution liées à une mauvaise gestion des signaux.
Nom | Description |
---|---|
SIGABRT | Cette macro permet d'indiquer une erreur de terminaison. |
SIGFPE | Cette macro permet d'indiquer une erreur à virgule flottante. |
SIGILL | Cette macro permet d'indiquer une mauvaise instruction. |
SIGINT | Cette macro permet d'indiquer qu'un utilisateur à enfoncé une combinaison de touche Ctrl+C. |
SIGSEGV | Cette macro permet d'indiquer qu'un accès mémoire illégale. |
SIGTERM | Cette macro permet d'indiquer une terminaison de programme. |
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 : Lundi, le 3 août 2015