À retenir
- C'est une interruption logicielle envoyée à un processus.
- Il permet une communication simple et asynchrone (arrive à n'importe quel moment).
- Chaque signal possède un numéro unique et une action par défaut (souvent l'arrêt du programme).
Un signal est une notification envoyée à un programme en cours d'exécution (un processus) pour l'avertir qu'un événement spécifique vient de se produire. C'est l'équivalent informatique d'une tape sur l'épaule ou d'une sonnerie d'alarme : il interrompt momentanément le travail du programme pour lui dire de réagir immédiatement à une situation précise.
Étymologie
Issu du latin signum (« signe »), le terme a été adopté par les concepteurs des premiers systèmes Unix dans les années 1970. Dans ce contexte, il désigne une forme primitive et ultra-rapide de communication entre processus, où l'on transmet une information simple sans s'encombrer de messages complexes.
Exemples d'usage
- Le signal
SIGINT, envoyé par le système quand un utilisateur appuie sur les touches Ctrl+C pour demander l'arrêt d'un script dans un terminal. - Le signal
SIGSEGV(Segmentation Fault), envoyé automatiquement par l'ordinateur lorsqu'un programme tente de lire une zone de mémoire à laquelle il n'a pas accès, provoquant son plantage.
Cas d'usage
Les signaux interviennent principalement au niveau du système d'exploitation pour la gestion des processus. Ils servent à arrêter proprement des logiciels, à signaler des erreurs matérielles ou à demander à un serveur de recharger sa configuration sans avoir à l'éteindre et le rallumer.
Bonnes pratiques
Lors du développement d'une application, il est recommandé de programmer des gestionnaires de signaux (handlers). Cela permet, par exemple, de fermer proprement une base de données ou de sauvegarder un travail en cours avant que le programme ne se ferme suite à une demande d'arrêt (signal SIGTERM).
Synonymes
Antonymes
Conseil
Si vous débutez en programmation système (C, Python, Go), apprenez à capturer le signal d'interruption. C'est une excellente habitude qui rend vos logiciels plus robustes et professionnels en évitant de laisser des fichiers temporaires ou des connexions ouvertes après un arrêt.
Questions fréquentes
Peut-on ignorer tous les signaux ?
Non. Certains signaux comme SIGKILL (arrêt immédiat et forcé) ne peuvent être ni interceptés, ni ignorés, afin que le système puisse toujours garder le contrôle sur un programme malveillant ou bloqué.
Quelle est la différence entre un signal et un message ?
Un signal est une alerte courte et codifiée (comme un voyant lumineux), tandis qu'un message (IPC) contient des données structurées et complexes (comme une lettre).