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 :
En m'attendant à voir afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Mais j'obtiens :en vie ! - pid = xxxx
toujours en vie ! - pid = xxxx
tué ! xxxx
xxxx est mort !
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.en vie ! - pid = xxxx
toujours en vie ! - pid = xxxx
tué ! xxxx
Quelqu'un saurait-il m'expliquer ce comportement ?
D'avance merci pour votre aide.
Partager