Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Signaux UNIX: SIGILL, SIGHUP, SIGINT, …

Si vous intéressez au fonctionnement des processus sous UNIX ou Linux, vous allez tôt ou tard confrontez aux signaux généralement au travers de la commande Kill.
Les signaux sont des interruptions que l’on peut envoyer à un processus pour informer d’un évènement.

Dans ce tutoriel, je vous donne une définition des signaux UNIX/Linux, la liste des signaux et comment envoyer un signal à un processus.

Signaux UNIX: SIGILL, SIGHUP, SIGINT, ...

Qu’est-ce qu’un signal dans UNIX ou Linux

Les signaux sont des notifications diverses envoyées à un processus afin de l’informer de divers événements “importants”. De par leur nature, ils interrompent ce que le processus est en train de faire, et l’obligent à les traiter immédiatement. Chaque signal possède un nombre entier qui le représente (1, 2, etc.), ainsi qu’un nom symbolique qui est généralement défini dans le fichier /usr/include/signal.h ou dans l’un des fichiers inclus par celui-ci directement ou indirectement (HUP, INT, etc.).
Utilisez la commande “kill -l” pour obtenir la liste des signaux pris en charge par votre système).

Chaque signal peut avoir un gestionnaire de signal, qui est une fonction appelée lorsque le processus reçoit ce signal. La fonction est appelée en “mode asynchrone”, ce qui signifie qu’aucun code de votre programme n’appelle directement cette fonction. Au lieu de cela, lorsque le signal est envoyé au processus, le système d’exploitation arrête l’exécution du processus et le “force” à appeler la fonction de gestion du signal. Lorsque la fonction de gestion du signal revient, le processus poursuit son exécution là où il se trouvait avant la réception du signal, comme si l’interruption n’avait jamais eu lieu.

Qu'est-ce qu'un signal dans UNIX ou Linux
Source : https://ift.tt/FgmrW9q

En quelques sortes, le signal visant un processus fonctionne comme une interruption (IRQ) pour le matériel.
Le signal n’est rien d’autre qu’une interruption dans l’exécution du processus. Un processus peut se signaler lui-même ou provoquer le passage d’un signal à un autre processus.
Ces interruptions (signaux) peuvent provenir de diverses sources, par exemple des erreurs matérielles telles que l’accès à des adresses mauvaises ou mal alignées, la mort d’un processus enfant, les signaux générés par l’utilisateur à l’aide de la commande kill, ou à partir d’autres processus utilisant un appel système.

Qu'est-ce qu'un signal dans UNIX ou Linux
Source : https://ift.tt/bNoJPtc

Quelle est la liste des signaux UNIX et Linux

Nom du Signal Numéro du Signal Description
SIGHUP 1 Raccrochage détecté sur le terminal de contrôle ou mort du processus de contrôle.
Il intervient à la perte ou fermeture du terminal : tout programme démarré dans un terminal donné recevra un SIGHUP lorsque le terminal sera fermé.
L’autre possibilité est que quelque chose envoie délibérément à votre processus un SIGHUP qui, par “tradition”, est souvent utilisé pour signaler à un processus qu’il doit relire sa configuration.
SIGINT 2 Émise si l’utilisateur envoie un signal d’interruption (Ctrl + C).
Le comportement par défaut est de mettre fin au processus, mais il peut être rattrapé ou ignoré. L’intention est de fournir un mécanisme pour un arrêt ordonné et gracieux.
SIGQUIT 3 Émis si l’utilisateur envoie un signal de sortie (Ctrl + D).
Le comportement par défaut est de mettre fin au processus et de vider le noyau, mais il peut être rattrapé ou ignoré. L’intention est de fournir un mécanisme permettant à l’utilisateur d’interrompre le processus. Vous pouvez considérer SIGINT comme un “arrêt heureux initié par l’utilisateur” et SIGQUIT comme un “arrêt malheureux initié par l’utilisateur”.
SIGFPE 8 Émis si une opération mathématique illégale est tentée.
SIGKILL 9 Si un processus reçoit ce signal, il doit s’arrêter immédiatement et n’effectuera aucune opération de nettoyage.
SIGALRM 14 Signal d’alarme (utilisé pour les minuteries).
SIGTERM 15 Signal de fin de logiciel.
Le comportement par défaut est de mettre fin au processus, mais il peut également être pris en charge ou ignoré. L’intention est de tuer le processus, gracieusement ou non, mais de lui donner d’abord une chance de se nettoyer.
SIGSTOP 19 Mettre le processus en pause ; le signal ne peut pas être capté ou ignoré. L’interpréteur de commandes utilise la pause (et son équivalent, la reprise via SIGCONT) pour mettre en œuvre le contrôle des tâches.
Quelle est la liste des signaux UNIX

Vous obtenir très facilement la liste des signaux avec la commande kill :

kill -l

Wikipedia fournit aussi une liste plus complète.

Comment envoyer un signal à un processus

Pour envoyer un signal à un processus, il faut utiliser la commande kill.
La syntaxe est la suivante où signal est le nom ou le numéro du signal.

kill -<signal< <pid>

Ici, signal est le numéro ou le nom du signal à délivrer et PID est l’ID du processus auquel le signal doit être envoyé. Par exemple –

kill -1 2001

La commande équivalente est :

kill -SIGHUP 2001

La commande ci-dessus envoie le signal HUP ou de raccrochage au programme qui s’exécute avec l’ID de processus 2001. Pour envoyer un signal kill au même processus, utilisez la commande suivante –

kill -9 2001

Cette commande tue le processus qui s’exécute avec l’ID de processus 2001.

L’article Signaux UNIX: SIGILL, SIGHUP, SIGINT, … est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires