Comportement étrange du kill
Bonsoir,
J'essaye de savoir si un processus est en vie et j'utilise donc un kill(pid,0)... sauf que celui-ci renvoie toujours 0.
Il me semble qu'il devrait renvoyer -1 lorsque le processus n'existe pas, pour tester celà, j'ai donc écrit le programme de test suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
int main(){
pid_t pid;
int i;
if ((pid = fork()) != 0){
if (kill(pid, 0) == 0)
printf("en vie ! - pid = %d\n",pid);
if (kill(pid, 0) == 0)
printf("toujours en vie ! - pid = %d\n", pid);
if (kill(pid, 9) == 0)
printf("tué ! %d\n",pid);
if (kill(pid, 0) != 0)
printf("%d est mort ! \n", pid);
}
else {
printf("j'existe !!!!!!!!!!!!!\n");
}
return 0;
} |
En m'attendant à voir afficher :
Citation:
en vie ! - pid = xxxx
toujours en vie ! - pid = xxxx
tué ! xxxx
xxxx est mort !
Mais j'obtiens :
Citation:
en vie ! - pid = xxxx
toujours en vie ! - pid = xxxx
tué ! xxxx
Et je ne comprends pas, j'ai bien essayé de faire attendre le père après le kill(pid,9), de bidouiller un peu dans tous les sens et j'ai toujours le même résultat.
Quelqu'un saurait-il m'expliquer ce comportement ?
D'avance merci pour votre aide.