[C system] timeout sur un processus
Bonjour
Voulant me remettre au C, je me suis fixé ce petit projet : créer une commande timeout qui prend un temps en secondes et une commande shell. Si au bout de ce temps t la commande n'est pas terminée, elle est tuée.
A priori, tout va bien dans mon code, aucune erreur à la compilation avec gcc v4.0.3 sous Ubuntu 6.06 x86. Mais à L'exécution, malgré le temps donné, la commande ne se fait pas tuer.
Voici la partie de mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
pid = fork();
if(pid<0){
fprintf(stderr, "Fork error : %d\n", pid);
exit(pid);
}
if(pid==0){
t = time(NULL);
while(t-start < delay[0]){
execvp(command[0], command);
t = time(NULL);
}
kill(pid, SIGKILL);
fprintf(stdout, "Timeout.\n");
exit(EXIT_SUCCESS);
}
else{
retour = waitpid(pid, &status, 0);
if(retour < 0){
exit(EXIT_SUCCESS);
}
} |
Peut être que l'utilisation du while n'était pas une bonne idée ?
Merci d'avance de vos conseils.
@++