man kill (Appels systèmes) - Envoyer un signal à un processus.

NOM

kill - Envoyer un signal à un processus.

SYNOPSIS

#include <sys/types.h>


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

DESCRIPTION

L'appel-système kill peut être utilisé pour envoyer n'importe quel signal à 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 processus 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 correspondant à 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 correspondait à 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

TRADUCTION

Christophe Blaess, 1996-2003.