Annexes

a. Signaux système

Un signal est un message envoyé à un processus. Le corps du message est en fait très simple puisqu'il est constitué en tout et pour tout d'un entier indiquant le type du signal. Typiquement, l'arrivée d'un signal interrompt, plus ou moins brutalement l'exécution du processus qui le reçoit. Les signaux systèmes jouent au niveau des processus le rôle que les exceptions et les interruptions jouent au niveau du processeur. Ainsi, un signal agit comme une "sonnerie" qui avertit un processus d'un événement synchrone (propre à la programmation) ou asynchrone (extérieur au programme).


La norme POSIX définit plusieurs signaux qui peuvent être utilisés pour agir sur les processus, on va en voir certains, nécessaires en cas de DOS en cours, par exemple. On transmet les signaux avec la commande kill, dont la syntaxe est :

# kill numero_signal numero_process_a_tuer


On peut voir la liste des signaux disponibles avec la commande suivante :

# kill -l


Voilà la liste des principaux signaux disponibles et utiles sous Gnu/Linux :

Nom Entier correspondant Action par défaut Non interceptable Non ignorable Description
SIGHUP 1 terminer le processus Envoyé par un shell à tous les processus qui en dépendent pour prévenir de sa terminaison. Peut permettre de redémarrer certains processus.
SIGINT 2 terminer le processus Signal d'interruption, envoyé par exemple par la combinaison de touches Control-C.
SIGQUIT 3 terminer le processus Signal de terminaison d'un processus (Control-\). Signal par défaut utilisé par la commande kill et ses dérivés, terminaison rapide du processus auquel il est envoyé..
SIGILL 4 terminer le processus Emis en cas d'instruction illégale.
SIGTRAP 5 créer un fichier core Emis après chaque exécution d'une instruction par un processus donné, ou en cas de rencontre d'un point d'arrêt prévu, à fin de déboggage.
SIGIOT 6 créer un fichier core Erreur matérielle.
SIGFPE 8 créer un fichier core Erreur mathématique (division par zéro par exemple).
SIGKILL 9 terminer le processus X X Tue un processus, quel que soit sont état, de manière inconditionnelle. A utiliser en cas d'urgence, mais le processus se terminera pas correctement, et donc laissera des traces (non libération de certaines ressources, mémoire, disque, ...).
SIGSEGV 11 créer un fichier core Erreur de segmentation.
SIGSYS 12 - Erreur de paramètre lors d'un appel système.
SIGPIPE 13 terminer le processus Erreur concernant un tube ("pipe") système (par exemple, écriture sans qu'un autre processus lise la sortie).
SIGALRM 14 terminer le processus Signal associé à une horloge (synchronisation, ...).
SIGTERM 15 terminer le processus X X Terminaison normale d'un processus, donc propre (ressources correctement relachées).
SIGSTOP 17 arrêter le processus X X Signal de pause immédiate du processus (en l'état). Correspond à la combinaison de touches Control-S.
SIGCONT 18, 19, 25 arrêter le processus Continuer le processus s'il est arrêté.


A la réception d'un signal, un programme peut avoir trois actions :


Note : Après l'envoi d'un signal SIGSTOP, on peut faire reprendre l'exécution du processus grâce à deux commandes. Pour le faire reprendre au premier plan du shell en cours :

# fg

Pour le faire redémarrer en arrière plan :

# bg



GNU Free Documentation License
Sommaire