« Programmation C/Gestion des signaux » : différence entre les versions
Contenu supprimé Contenu ajouté
m oops |
→Envoi d'un signal : wiki et précisions |
||
Ligne 7 :
==Envoi d'un signal==
<source lang="c">
*PID > 0 : identifiant d'un processus▼
int kill(pid_t pid, int sig);
*PID = 0 : le signal sera envoyé à tous les processus du groupe processus▼
</source>
*PID = -1 : le signal sera envoyé à tous les processus de l'utilisateur. En super-utilisateur (uid=0) tous les processus (sauf système) reçoivent le signal.▼
Le paramètre <tt>pid</tt> permet d'identifier le ou les processus qui recevront le signal:
▲*
=== Exemple ===
Par exemple, un processus fils envoie le signal <tt>SIGFPE</tt> a son père qui a pour fonction d'afficher dix fois le message "Pere
kill(0, SIGFPE);▼
<source lang="c">
Ligne 21 ⟶ 25 :
int main(void)
{
int iterations = 10;
pid = fork();
while (iterations--)
{
▲ }
else {▼
}
}
else if (pid == 0)
{
puts("Fils");
}
{
puts("Erreur: fork() impossible");
}
return 0;
}
</source>
Une sortie possible est:
$ cc exkill.c -o exkill
$ ./exkill
Fils
Floating point exception
Il est possible, suivant la manière dont les processus sont synchronisés, que le processus père affiche une ou plusieurs lignes avant d'être interrompu par le signal.
|