Sommaire

Envoi d’un signal

Nous avons vu que les signaux peuvent être émis spontanément par le noyau, en réaction à certains événements (instruction illégale, demande d’accès à une adresse mémoire invalide ou interdite, terminaison de processus leaders, etc.), ou à la suite d’une action utilisateur (séquences de touches clavier particulières, déconnexion, commande shell kill).

Un processus peut également demander l’envoi d’un signal vers un ou plusieurs destinataires, y compris lui-même. Pour cela, il peut utiliser différents appels système, le principal étant l’appel kill().

1. Appel système kill()

Syntaxe

#include <sys/types.h> 
#include <signal.h> 
int kill(pid_t pid, int sig);

Arguments

pid

Identifiant du ou des destinataires

sig

Numéro du signal à émettre

Valeur retournée

-1

Erreur, code erreur positionné dans la variable errno

0

Succès

Description

Un processus privilégié peut envoyer un signal à n’importe quel processus, avec des restrictions concernant le processus de PID 1 (voir plus loin).

Un processus non privilégié peut envoyer un signal à tout processus ayant le même identifiant utilisateur effectif ou réel que lui. Il peut également envoyer le signal SIGCONT (sortie de suspension) aux processus membres de sa session.

Un processus peut s’envoyer un signal à ...