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 :
Peut être que l'utilisation du while n'était pas une bonne idée ?
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 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); } }
Merci d'avance de vos conseils.
@++
Partager