KILL(2) Manuel du programmeur Linux KILL(2)
NOM
kill - Envoyer un signal à un processus.
SYNOPSIS
#include
#include
int kill(pid_t pid, int sig);
DESCRIPTION
L'appel-système kill peut être utilisé pour envoyer n'importe quel sig‐
nal à n'importe quel processus ou groupe de processus.
Si pid est positif, le signal sig est envoyé au processus pid.
Si pid vaut zéro, alors le signal sig est envoyé à tous les processus
appartenant au même groupe que le processus appelant.
Si pid vaut -1, alors le signal sig est envoyé à tous les processus
sauf celui de PID 1 (init), mais voir plus bas.
Si pid est inférieur à -1, alors le signal sig est envoyé à tous les
processus du groupe -pid.
Si sig vaut 0, aucun signal n'est envoyé mais les conditions d'erreur
sont vérifiées.
VALEUR RENVOYÉE
En cas de réussite 0 est renvoyé, en cas d'échec -1 est renvoyé et
errno contient le code d'erreur.
ERREURS
EINVAL Numéro de signal invalide.
ESRCH Le processus ou le groupe de processus n'existe pas. Remarquez
qu'un processus existant peut être un zombie, c'est à dire qu'il
s'est déjà terminé mais que son père n'a pas encore lu sa valeur
de retour avec wait().
EPERM Le processus appelant n'a pas l'autorisation d'envoyer un signal
à l'un des processus concernés. Pour qu'un processus ait le
droit d'envoyer un signal à un autre processus pid il doit avoir
des privilèges de Super-Utilisateur, ou avoir un UID réel ou
effectif égal à l'ID réel ou sauvegardé du processus récepteur.
Dans le cas de SIGCONT, il suffit que les processus émetteur et
récepteur appartiennent à la même session.
NOTES
On ne peut envoyer au processus numéro un (init) que des signaux pour
lesquels il a expressément installé un gestionnaire. Ceci évite que le
système soit arrêté accidentellement.
POSIX 1003.1-2001 réclame que kill(-1,sig) envoie sig à tous les pro‐
cessus accessibles par le processus appelant, sauf à certains processus
système dépendant de l'implémentation. Linux autorise un processus à
s'envoyer un signal à lui-même, mais l'appel kill(-1,sig) n'envoie pas
le signal au processus appelant.
HISTORIQUE
Suivant les différentes versions du noyau, Linux a utilisé différentes
règles pour les permissions nécessaires à un processus non-privilégié
pour envoyer un signal a un autre processus. Dans les noyaus 1.0 à
1.2.2, un signal pouvait être envoyé si l'UID effectif de l'émetteur
correspondait à celui du récepteur, ou si l'UID réel de l'émetteur cor‐
respondant à celui du récepteur. Dans les noyaux 1.2.3 à 1.3.77, un
signal pouvait être envoyé si l'UID effectif de l'émetteur corre‐
spondait à UID effectif ou réel du récepteur. Les règles actueles,
conformes à POSIX 1003.1-2001 ont été adoptées dans le noyau 1.3.78.
CONFORMITÉ
SVr4, AT&T, POSIX.1, X/OPEN, BSD 4.3
VOIR AUSSI
_exit(2), killpg(2), signal(2), exit(3), signal(7)
TRADUCTION
Christophe Blaess, 1996-2003.
LDP 18 juillet 2003 KILL(2)