Sommaire

Capturer des signaux UNIX avec le module signal Signaux UNIX signal

Les signaux UNIX forment une part importante de la programmation système. Un signal est un message asynchrone qui notifie un événement particulier à un programme. La bibliothèque standard de Python propose un module pour exploiter l’utilisation des signaux, le module signal. Avant d’aborder la partie programmation, un bref rappel de la manipulation des signaux est nécessaire.

Depuis la ligne de commande, l’outil kill est généralement utilisé pour envoyer un signal à un programme : kill

patrice@raspberrypi ~ $ kill  
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... 
or kill -l [sigspec]  
patrice@pi ~ $ kill -SIGTERM 1  
bash: kill: (1) - Operation not permitted

Dans cet exemple, la commande kill est utilisée pour envoyer le signal SIGTERM au programme init dont le PID (Processus ID) est toujours 1. Cependant, le système d’exploitation retourne une erreur. En effet, le comportement par défaut d’un programme est d’accepter un signal seulement si l’utilisateur qui l’envoie est habilité à modifier l’état du programme. Généralement, le propriétaire du programme ou bien le super utilisateur root. Par exemple, le programme init, processus parent de tous les processus courants, ne peut recevoir de signaux d’un utilisateur autre que root, et ceci afin de garantir la stabilité ...