Loading

NOM

       kill - Envoyer un signal à un processus

SYNOPSIS

       #include <sys/types.h>
       #include <signal.h>

       int kill(pid_t pid, int sig);

   Exigences  de  macros  de  test  de  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

       kill() : _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

       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 dont
       l’identifiant est indiqué par 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 dont l’identifiant est -pid.

       Si  sig  vaut 0, aucun signal n’est envoyé mais les conditions d’erreur
       sont vérifiées ; ceci peut être utilisé pour vérifier l’existence  d’un
       identifiant de processus ou d’un identifiant de groupes de processus.

       Pour  qu’un  processus  puisse  envoyer  un  signal,  il doit avoir les
       privilèges nécessaires (sous Linux : avoir la  capacité  CAP_KILL),  ou
       l’UID effectif ou réel du processus qui envoie le signal doit être égal
       au Set-UID sauvé ou réel du processus cible.  Dans  le  cas  du  signal
       SIGCONT,  il  suffit  que  les processus envoyant et recevant le signal
       appartiennent à la même session.

VALEUR RENVOYÉE

       En cas de réussite (au moins un signal a été envoyé) 0 est renvoyé,  en
       cas d’échec -1 est renvoyé et errno contient le code d’erreur.

ERREURS

       EINVAL Numéro de signal invalide.

       EPERM  Le processus appelant n’a pas l’autorisation d’envoyer un signal
              aux processus cibles.

       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(2).

CONFORMITÉ

       SVr4, BSD 4.3, POSIX.1-2001.

NOTES

       On  ne  peut  envoyer au processus numéro 1 (init) que des signaux pour
       lesquels il a expressément installé un gestionnaire. Ceci évite que  le
       système soit arrêté accidentellement.

       POSIX.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.

       POSIX.1-2001 réclame que si un processus s’envoie un signal à lui‐même,
       que ce thread ne bloque pas le signal et qu’aucun autre thread  ne  l’a
       non  bloqué ou et en attente dans un sigwait(3), au moins un signal non
       bloqué doit être délivré au thread courant avant que l’appel  à  kill()
       ne revienne.

   Notes sur Linux
       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 noyaux 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 à  l’UID  effectif  ou  réel  du  récepteur.  Les  règles
       actuelles,  conformes  à  POSIX.1-2001  ont  été adoptées dans le noyau
       1.3.78.

BOGUES

       Dans les noyaux  2.6  jusqu’à  2.6.7  inclus,  en  raison  d’un  bogue,
       lorsqu’un signal était envoyé à un groupe de processus, kill() échouait
       avec l’erreur EPERM si l’appelant avait permission d’envoyer le  signal
       à lun des membres du groupe, mais pas à tous. Malgré ce code d’erreur,
       le signal  était  bien  envoyé  à  tous  les  processus  pour  lesquels
       l’appelant en avait la permission.

VOIR AUSSI

       _exit(2),   killpg(2),   signal(2),   sigqueue(2),  tkill(2),  exit(3),
       capabilities(7), credentials(7), signal(7)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».