NORBA NATIONAL ROUND ONE. SNOW SUMMIT

Interruptions De Signal Sous Linux – Introduction Du Débutant

Les processus sous Linux sont contrôlés par des interruptions de signal. Les signaux sous Linux sont l’une des structures les plus basiques et fondamentales de Linux. Les signaux et les processus contrôlent presque toutes les tâches du système. Il vaut donc la peine de se renseigner sur la structure de base et le fonctionnement des signaux Linux.

Dans ce didacticiel, nous discuterons de divers signaux, de leurs fonctions et de la manière de les invoquer.

Qu’est-ce Qu’une Interruption De Signal Et Pourquoi En Avons-nous Besoin ?

Dans un système d’exploitation comme Linux, plusieurs processus s’exécutent simultanément. Ces processus dépendent souvent de l’état d’autres processus exécutés avec eux. Ils ont besoin d’un moyen de communiquer entre eux pour maintenir la stabilité. Un processus communique en envoyant une notification unidirectionnelle appelée signaux.

Un signal n’a pas nécessairement besoin d’être entre deux processus, un signal peut être envoyé vers et depuis le noyau vers/depuis un processus.

Image 1 : Organigramme représentant le flux du signal entre le noyau et les processus

Les signaux sont parfois décrits comme des interruptions de signal, car dans la plupart des cas, ils interrompent le flux normal d’exécution d’un programme et leur arrivée est imprévisible.

Actions Des Signaux

Chaque interruption de signal a une disposition actuelle, qui détermine le comportement du processus lorsque le signal lui est délivré. Il existe des manières par défaut ( Actions ) par lesquelles un processus répond à un signal, voici un tableau décrivant les différentes Actions pour chaque signal.

Tableau 1 : Actions et leurs dispositions par défaut

Un processus peut modifier la disposition d’un signal à l’aide de sigaction. À l’aide de ces appels système, un processus peut choisir l’un des comportements suivants pour qu’il se produise lors de la livraison du signal :

  • effectuer l’action par défaut
  • ignorer le signal
  • captez le signal avec un gestionnaire de signal, une fonction définie par le programmeur qui est automatiquement invoquée lorsque le signal est délivré.

Quelques Signaux Communs Et Leur Signification

Il existe 31 signaux standard, numérotés de 1 à 31. Chaque signal est nommé « SIG » suivi d’un suffixe. À partir de la version 2.2, le noyau Linux prend en charge 33 signaux temps réel différents.

Voici quelques-uns des signaux courants que vous avez peut-être rencontrés :

Tableau 2 : Quelques signaux communs avec leurs actions respectives.

Le signal numéro 0, qui dans POSIX.1 est appelé signal nul, n’est généralement pas utilisé mais la fonction kill l’utilise comme cas particulier. Aucun signal n’est envoyé mais il peut être utilisé pour vérifier si le processus existe toujours.

Envoi D’une Interruption De Signal à Un Processus

L’une des méthodes les plus courantes pour envoyer des interruptions de signal consiste à utiliser la fonction kill, dont la syntaxe est la suivante :

 kill -signal pid

Exemples:

Un signal SIGHUP est envoyé au processus avec le pid 1001

tuer -1 1001

Un signal SIGKILL est envoyé au processus avec le pid 1001 pour tuer le processus immédiatement.

tuer -9 1001

Il existe également une autre fonction raise qui envoie un signal au processus appelant lui-même. Le signal est envoyé de telle sorte que le signal soit reçu par le processus avant même le retour de la fonction d’augmentation.

Conclusion Et Références

Cela nous amène à la fin de ce didacticiel d’introduction sur les signaux Linux. Restez à l’écoute pour d’autres articles de ce type sur Linux et d’autres programmes open source.