Envoyer un signal

Problème

Vous voulez envoyer un signal à un processus.

Solution

Utilisez kill().

Il existe aussi une commande kill et une page de manuel associée. Pour obtenir celle de la fonction, exécutez man 2 kill ou man -s 2 kill qui devraient fonctionner.

Discussion

L’utilisation de kill() est simple : le premier argument est l’identifiant du processus auquel envoyer le signal et le second argument est le signal. Cependant, cela ne fonctionnera que pour un processus appartenant à l’utilisateur qui exécute kill(), à moins d’avoir les privilèges administrateur.

Il est intéressant de savoir que killpg() permet d’envoyer un signal (second argument) à tous les processus du même groupe que celui spécifié en premier argument. Notons que kill() et killpg() sont équivalents si leur premier argument est zéro : le signal est envoyé à tous les processus du même groupe que celui qui envoie le signal. De plus, kill(-1, signal) envoie le signal à tous les processus sauf quelques processus vitaux, à condition qu’il ait les permissions appropriées.

La fonction kill() a par ailleurs la capacité de tester qu’un processus est présent en fonction de son identifiant. Pour cela, donnez la valeur zéro en guise de signal. Aucun signal n’est alors envoyé, mais en cas d’absence du processus (dont l’identifiant est le premier argument), un code d’erreur...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Intercepter [Ctrl] C
Suivant
Sauvegarder un gestionnaire de signaux et le restaurer par la suite