Signaux Unix

Un signal est une forme limitée de communication entre processus utilisée par les systèmes de type Unix et ceux respectant les standards POSIX. Il s'agit d'une notification asynchrone envoyée à un processus pour lui signaler l'apparition d'un événement. Quand un signal est envoyé à un processus, le système d'exploitation interrompt l'exécution normale de celui-ci. Si le processus possède une routine de traitement pour le signal reçu, il lance son exécution. Dans le cas contraire, il exécute la routine de traitement des signaux par défaut.

Ces signaux sont apparus dans le standard POSIX.1-1990. Le Les signaux peuvent varier d'un système à un autre, ils sont définis dans le fichier d'entête du systèmes, <signal.h>. SIGKILL et SIGSTOP ne peuvent pas être interceptés par le processus.

https://en.wikipedia.org/wiki/Unix_signal

ID Nom Description Action par défaut
1 SIGHUP Rupture détectée sur le terminal contrôleur ou mort du processus parent Terminer le processus
2 SIGINT Interruption du clavier (Ctrl+C dans un terminal) Terminer le processus
3 SIGQUIT Arrêt du processus Terminer le processus et faire un dump core
4 SIGILL Instruction illégale Terminer le processus et faire un dump core
6 SIGABRT Arrêt anormal du processus Terminer le processus et faire un dump core
8 SIGFPE Erreur sur un nombre flottant Terminer le processus et faire un dump core
9 SIGKILL Tue immédiatement le processus Terminer le processus
11 SIGSEGV Erreur de segmentation Terminer le processus et faire un dump core
13 SIGPIPE Erreur de tube (écriture dans un tube sans lecteur) Terminer le processus
14 SIGALRM Signal du timer définit par alarm(2) Terminer le processus
15 SIGTERM Termine le processus Terminer le processus
16,10,30 SIGUSR1 Signaux utilisateurs, l'action est spécifique au processus Terminer le processus
17,12,31 SIGUSR2 Signaux utilisateurs, l'action est spécifique au processus Terminer le processus
18,20,17 SIGCHLD Processus enfant terminé ou stoppé Rien
19,18,25 SIGSTOP Interromps immédiatement le processus Stoppe le processus
20,18,24 SIGSTP Interromps le processus (Ctrl+Z dans un terminal) Stoppe le processus
21,26 SIGTTIN Entrée de terminal pour un processus en arrière plan Stoppe le processus
22,27 SIGTTOU Sortie de terminal pour un processus en arrière plan
SIGVTALRM chronomètre virtuel (Virtual Timer) expiré
SIGXCPU Le processus a dépassé une certaine limite d'utilisation du processus définit par l'utilisateur. Le processus doit alors sauvegarder les données temporairement obtenues et quitter proprement avant une interception par le signal SIGKILL.
SIGXFSZ Le script a fait grossir un fichier au-delà d'une limite définie
SIGWINCH la taille du terminal contrôlant le processus a changé

Trap

Trap est une fonction du shell permettant d'interragir avec les signaux unix.

Elle reçoit un signal envoyé au processus et agit selon la ou les commande(s) définies dans la commande au lieu de laisser le signal agir sur le programme avec son comportement normal. Par exemple, bloquer le SIGINT qui apparaitrait lors de l'execution d'un programme:

trap "echo 'SIGINT REÇU'" INT

ou encore de nettoyer un repertoire temporaire lors d'une erreur d'execution ou lorsque le programme termine

trap "rm $WORKING_DIR" 1 2 3 15
wiki/trap.et.signaux.txt · Dernière modification: 2019/08/20 16:31 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5