KILL |
Tuer |
---|---|
signal.h |
Syntaxe
int kill(pid_t pid, int sig); |
Paramètres
Nom | Description | |||
---|---|---|---|---|
pid | Ce paramètre permet d'indiquer l'identificateur de processus. | |||
sig | Ce paramètre permet d'indiquer le signal à envoyer s'il existe sur votre système : | |||
Constante | Valeur | Description | Système | |
SIGHUP | 1 | Cette constante permet d'envoyer un signal de raccrochage. | POSIX | |
SIGINT | 2 | Cette constante permet d'envoyer un signal d'interruption. | ANSI | |
SIGQUIT | 3 | Cette constante permet d'envoyer d'une touche demandant de quitter. | POSIX | |
SIGILL | 4 | Cette constante permet d'envoyer un signal d'une instruction illégale. | ANSI | |
SIGTRAP | 5 | Cette constante permet d'envoyer un signal d'une trappe d'instruction. | POSIX | |
SIGABRT | 6 | Cette constante permet d'envoyer un signal de message d'abandon. | ANSI | |
SIGIOT | 6 | Cette constante permet d'envoyer un signal de transfère d'entrée/sortie. | BSD | |
SIGBUS | 7 | Cette constante permet d'envoyer un signal d'erreur de bus. | BSD | |
SIGFPE | 8 | Cette constante permet d'envoyer un signal d'erreur de nombre réel (virgule flottante). | ANSI | |
SIGKILL | 9 | Cette constante permet d'envoyer un signal de tuer un processus. | POSIX | |
SIGUSR1 | 10 | Cette constante permet d'envoyer un signal utilisateur 1. | POSIX | |
SIGSEGV | 11 | Cette constante permet d'envoyer un signal de violation de segmentation. | ANSI | |
SIGUSR2 | 12 | Cette constante permet d'envoyer un signal utilisateur 2. | POSIX | |
SIGPIPE | 13 | Cette constante permet d'envoyer un signal de faute dans le tuyau (Pipe). | POSIX | |
SIGALRM | 14 | Cette constante permet d'envoyer un signal d'alarme. | POSIX | |
SIGTERM | 15 | Cette constante permet d'envoyer un signal de terminaison du programme. | ANSI | |
SIGSTKFLT | 16 | Cette constante permet d'envoyer un signal de faute dans la pile. | ||
SIGCHLD | 17 | Cette constante permet d'envoyer un signal du processus enfant. | POSIX | |
SIGCONT | 18 | Cette constante permet d'envoyer un signal de continuer le processus arrêté. | POSIX | |
SIGSTOP | 19 | Cette constante permet d'envoyer un signal d'arrêt d'un processus. | POSIX | |
SIGTSTP | 20 | Cette constante permet d'envoyer un signal d'arrêt d'un processus du terminal. | POSIX | |
SIGTTIN | 21 | Cette constante permet d'envoyer un signal d'arrêt d'un processus en lecture contrôlé du terminal. | POSIX | |
SIGTTOU | 22 | Cette constante permet d'envoyer un signal d'arrêt d'un processus en écriture contrôlé du terminal. | POSIX | |
SIGURG | 23 | Cette constante permet d'envoyer un signal d'arrêt à cause d'une condition urgente. | BSD | |
SIGXCPU | 24 | Cette constante permet d'envoyer un signal à cause d'un usage excessif des limites du microprocesseur. | BSD | |
SIGXFSZ | 25 | Cette constante permet d'envoyer un signal de taille limite excessive de fichiers. | BSD | |
SIGVTALRM | 26 | Cette constante permet d'envoyer un signal d'intervalle de minuterie virtuel expiré. | BSD | |
SIGPROF | 27 | Cette constante permet d'envoyer un signal de profile d'intervalle de minuterie expiré. | BSD | |
SIGWINCH | 28 | Cette constante permet d'envoyer un signal que la taille de la fenêtre été changé par un processus d'arrière-plan. | BSD, Sun | |
SIGIO | 29 | Cette constante permet d'envoyer un signal de synchronisation d'entrée/sortie. | BSD | |
SIGPWR | 30 | Cette constante permet d'envoyer un signal d'échec d'alimentation. | Unix System V | |
SIGUNUSED | 31 | Cette constante permet d'envoyer un signal inutilisé. |
Retour
Valeur | Description |
---|---|
entier | Ces valeurs permettent d'indiquer le nombre de processus correctement signalés. |
Description
Cette fonction permet d'effectuer des commandes sur des processus.
Remarques
- La fonction kill() doit envoyer un signal à un processus ou à un groupe de processus spécifié par pid. Le signal à envoyer est spécifié par sig et est l'un de la liste donnée dans le fichier signal.h ou 0. Si sig vaut 0 (le signal nul), une vérification d'erreur est effectuée mais aucun signal n'est réellement envoyé. Le signal nul peut être utilisé pour vérifier la validité de pid.
- Pour qu'un processus soit autorisé à envoyer un signal à un processus désigné par pid, à moins que le processus d'envoi ne dispose des privilèges appropriés, l'identificateur utilisateur réel ou effectif du processus d'envoi doit correspondre à l'identificateur utilisateur d'ensemble réel ou enregistré du processus de réception.
- Si le paramètre pid est supérieur à 0, alors paramètres sig doit être envoyé au processus dont l'identificateur de processus est égal à pid.
- Si le paramètre pid vaut 0, alors le paramètre sig doit être envoyé à tous les processus (à l'exception d'un ensemble non spécifié de processus système) dont l'identificateur de groupe de processus est égal à l'identificateur de groupe de processus de l'expéditeur et pour lesquels le processus a l'autorisation d'envoyer un signal.
- Si le paramètre pid vaut -1, alors le paramètre sig doit être envoyé à tous les processus (à l'exception d'un ensemble non spécifié de processus système) pour lesquels le processus a l'autorisation d'envoyer ce signal.
- Si le paramètre pid est négatif, mais pas -1, alors le paramètre sig doit être envoyé à tous les processus (à l'exclusion d'un ensemble non spécifié de processus système) dont l'identificateur de groupe de processus est égal à la valeur absolue de pid, et pour lesquels le processus a l'autorisation d'envoyer un signal.
- Si la valeur de pid provoque la génération de sig pour le processus d'envoi, et si sig n'est pas bloqué pour le processus léger appelant et si aucun autre processus léger n'a sig débloqué ou attend dans une fonction sigwait() pour sig, soit sig, soit au moins un signal non bloqué en attente doit être délivré au processus léger d'envoi avant le retour de kill().
- Les tests d'identificateur utilisateur décrits ci-dessus ne doivent pas être appliqués lors de l'envoi de SIGCONT à un processus étant membre de la même session que le processus d'envoi.
- Une mise en oeuvre fournissant des contrôles de sécurité étendus peut imposer d'autres restrictions définies par la mise en oeuvre sur l'envoi de signaux, y compris le signal nul. En particulier, le système peut nier l'existence de certains ou de tous les processus spécifiés par pid.
- La fonction kill() réussit si le processus a l'autorisation d'envoyer sig à l'un des processus spécifiés par pid. Si la fonction kill() échoue, aucun signal ne sera envoyé.
- Dans la version 4.2 de BSD, le signal SIGCONT peut être envoyé à n'importe quel processus descendant indépendamment des contrôles de sécurité de l'identificateur utilisateur. Il permet à l'interpréteur de commande de contrôle des travaux de continuer un travail même si les processus du travail ont modifié leur identificateur utilisateur (comme dans la commande su). Conformément à l'ajout du concept de sessions, une fonctionnalité similaire est fournie en permettant au signal SIGCONT d'être envoyé à n'importe quel processus dans la même session, indépendamment des contrôles de sécurité de l'identificateur utilisateur. Il est moins restrictif que BSD dans le sens où les processus ancêtres (dans la même session) peuvent désormais être le destinataire. Il est plus restrictif que BSD en ce sens que les processus descendants formant de nouvelles sessions sont désormais soumis aux vérifications de l'identificateur utilisateur. Un assouplissement similaire de la sécurité n'est pas nécessaire pour les autres signaux de commande de travail puisque ces signaux sont typiquement envoyés par le pilote de terminal en reconnaissance de caractères spéciaux saisis; le pilote du terminal contourne tous les contrôles de sécurité.
- Dans les mises en oeuvre sécurisées, un processus peut être restreint d'envoyer un signal à un processus ayant une étiquette de sécurité différente. Afin d'éviter que l'existence ou l'inexistence d'un processus ne soit utilisée comme canal secret, de tels processus devraient sembler inexistants à l'expéditeur; c'est-à-dire que [ESRCH] doit être renvoyé, plutôt que [EPERM], si pid se réfère uniquement à ces processus.
- Le nom de la fonction kill() est trompeur, car la fonction n'est pas toujours destinée à provoquer l'arrêt du processus. Cependant, le nom est commun à toutes les mises en oeuvres historiques et toute modification serait en conflit avec l'objectif de modifications minimales du code d'application existant.
Voir également
Langage de programmation - Perl - Référence procédures et fonctions - kill
Dernière mise à jour : Dimanche, le 21 février 2016