« Programmation C/Gestion des signaux » : différence entre les versions
Contenu supprimé Contenu ajouté
→Envoi d'un signal : Changement du titre |
Précisions dans l'introduction |
||
Ligne 1 :
{{ébauche}}
<noinclude>{{Programmation C}}</noinclude>
Les signaux permettent une communication, assez sommaire, entre le système et un processus, ou entre différents processus. Cette communication est sommaire, car un ''signal'' ne porte qu'une seule information: son numéro, de type <tt>int</tt>. Un processus peut aussi s'envoyer un signal à lui-même.
Ces signaux sont envoyés de manière ''asynchrone'': lorsqu'un processus reçoit un signal, son exécution est interrompue, et une fonction spécifique, dite ''gestionnaire de signal'', est appelée, avec en paramètre le numéro du signal reçu, pour traiter l'événement. Lorsque cette fonction se termine, le processus reprend là où il s'était arrêté.
C'est à chaque processus de déterminer ce qu'il fait quand il reçoit un signal de numéro donné, en définissant un gestionnaire de signal pour tous les signaux qu'il le souhaite. Vous l'aurez remarqué, dans tous les exemples de ce livre, nous ne nous sommes pas occupés de savoir quels signaux nous pourrions recevoir, et comment il fallait les traiter. En l'absence de précisions dans nos programmes, l'implémentation fournira en effet un gestionnaire de signal par défaut, qui le plus souvent se contentera d'arrêter le programme.
Les fonctions suivantes sont utilisées dans la gestion des signaux :
* <tt>signal()</tt> pour définir un gestionnaire de signal;
* <tt>raise()</tt> pour envoyer un signal au processus courant;
* <tt>kill()</tt> pour envoyer un signal à un autre processus (on notera que cette fonction est fournie en extension dans ''Unix System V'' et POSIX, et n'existe pas dans la norme C);
* <tt>pause()</tt> pour attendre un signal (id.).
== Envoi d'un signal à un autre processus ==
|