ASR2 - L3 Informatique - ENS Lyon Année 2013-2014
A. Benoit, A.Isoard, A.Lefray et D. Zaidouni
TP/TD 4 : Signaux, Mémoire partagée, Files de messages
Cours
Learn !
Les Signaux
Les signaux permettent de signaler un évènement exceptionel mais peuvent également servir pour
établir une communication inter-processus. Différents évènements peuvent générer un signal :
— Une erreur programme (division par zero ou adresse invalide).
— Une requête utilisateur d’interruption ou de terminaison d’un programme (suspend : C-z, ter-
minate C-c).
— La terminason d’un processus fils.
— L’expiration d’un timer ou d’une alarme.
— Un appel à kill ou raise par le même processus.
— Un appel à kill d’un autre processus.
— L’échec d’une tentative d’opération d’I/O.
Attention, en règle générale, les signaux ne peuvent être émis qu’entre processus de même utilisateur
(à l’exception de SIGCONT).
Lorsqu’un signal est généré, il est marqué comme pending puis devient soit delivered et est trans-
mis au processus, ou est blocked auquel cas le signal reste en attente jusqu’à ce qu’il soit unblocked.
Lorsqu’il est délivré, le signal peut être :
— Géré par un comportement par défaut.
— Géré par un code spécifique (handler).
— Ignoré.
Pour bloquer des signaux, il suffit de positioner leur flag dans le masque des signaux du processus
via la fonction sigprocmask. À noter que SIGKILL et SIGSTOP ne peuvent être bloqués. Pour attendre
des signaux, il suffit de faire appel à sigsuspend. Pour définir un handler de signaux, il suffit de faire
appel à signal (gestion simple) ou sigaction (gestion avancée).
Les signaux : signal, alarm, pause, kill
Using smoke for signals is unsafe.
Pour afficher la liste des signaux, exécuter la commande kill -l.
1. Pourquoi bloquer un signal ?
Solution:
Eviter une interruption en section critique (signal handler). Tester si un signal n’est pas arrivé
(check des flags) et ainsi éviter qu’il puisse se produire juste après le test et avant tout code.
2. Quel le masque de signaux d’un processus fils après un fork ?
Solution:
Il hérite du masque du processus père.
1