kill(2) System Calls Manual kill(2) NOM kill - Envoyer un signal a un processus BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int kill(pid_t pid, int sig); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : kill() _POSIX_C_SOURCE DESCRIPTION L'appel systeme kill() peut etre utilise pour envoyer n'importe quel signal a n'importe quel processus ou groupe de processus. Si pid est positif, le signal sig est envoye au processus dont l'identifiant est indique par pid. Si pid vaut 0, alors le signal sig est envoye a tous les processus appartenant au meme groupe que le processus appelant. Si pid vaut -1, alors le signal sig est envoye a tous les processus pour lesquels le processus appelant est autorise a envoyer des signaux, sauf celui de PID 1 (init), mais voir plus bas. Si pid est inferieur a -1, alors le signal sig est envoye a tous les processus du groupe dont l'identifiant est -pid. Si sig vaut 0, aucun signal n'est envoye mais des verifications d'existence et de permissions sont realisees. Cela peut etre utilise pour verifier l'existence d'un identifiant de processus ou d'un identifiant de groupe de processus auquel l'appelant a le droit d'envoyer un signal. Pour qu'un processus puisse envoyer un signal, il doit avoir les privileges necessaires (sous Linux : avoir la capacite CAP_KILL dans l'espace de noms utilisateur du processus cible), ou l'UID effectif ou reel du processus qui envoie le signal doit etre egal au Set-UID sauvegarde ou reel du processus cible. Dans le cas du signal SIGCONT, il suffit que les processus envoyant et recevant le signal appartiennent a la meme session. (Historiquement, les regles etaient differentes. Consultez les NOTES.) VALEUR RENVOYEE En cas de reussite (au moins un signal a ete envoye) 0 est renvoye, en cas d'echec -1 est renvoye et errno positionne pour indiquer l'erreur. ERREURS EINVAL Un signal invalide a ete specifie. EPERM Le processus appelant n'a pas l'autorisation d'envoyer un signal a un des processus cibles. ESRCH Le processus ou le groupe de processus cible n'existe pas. Remarquez qu'un processus existant peut etre un zombie, c'est-a-dire qu'il s'est termine mais n'a pas encore ete mis en wait(2). STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001, SVr4, 4.3BSD. Notes pour Linux Au fil des differentes versions du noyau, Linux a renforce les regles de droits necessaires pour qu'un processus non privilegie envoie un signal a un autre processus. Dans Linux de 1.0 a 1.2.2, un signal pouvait etre envoye si l'UID effectif du processus emetteur correspondait a celui du processus cible, ou si l'UID reel du processus emetteur correspondait a celui du processus cible. Dans Linux de 1.2.3 a 1.3.77, un signal pouvait etre envoye si l'UID effectif du processus emetteur correspondait a l'UID effectif ou reel du processus cible. Les regles actuelles, conformes a POSIX.1, ont ete adoptees dans Linux 1.3.78. NOTES On ne peut envoyer au processus numero 1 (init) que des signaux pour lesquels init a expressement installe des gestionnaires de signal. Cela evite que le systeme soit arrete accidentellement. POSIX.1 reclame que kill(-1,sig) envoie sig a tous les processus auxquels l'appelant peut envoyer un signal, sauf a certains processus systeme dependant de l'implementation. Linux autorise un processus a s'envoyer un signal a lui-meme, mais l'appel kill(-1,sig) n'envoie pas le signal au processus appelant. POSIX.1 reclame que si un processus s'envoie un signal a lui-meme, et si le thread a l'origine de l'envoi n'a pas les signaux bloques, et si aucun autre thread ne le debloque ou ne l'attende dans un sigwait(3), au moins un signal non bloque doit etre delivre au thread a l'origine de l'envoi avant que l'appel a kill() ne soit renvoye. BOGUES Dans Linux 2.6 jusqu'a Linux 2.6.7 inclus, en raison d'un bogue, lorsqu'un signal etait envoye a un groupe de processus, kill() echouait avec l'erreur EPERM si l'appelant n'avait pas la permission d'envoyer le signal a quelques (plutot qu'a tous) les membres du groupe. En depit de ce code d'erreur, le signal etait cependant bien envoye a tous les processus pour lesquels l'appelant en avait la permission. VOIR AUSSI kill(1), _exit(2), pidfd_send_signal(2), signal(2), tkill(2), exit(3), killpg(3), sigqueue(3), capabilities(7), credentials(7), signal(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Cedric Boutillier , Frederic Hantrais et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 kill(2)