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 : 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);
		}	
	}
Peut être que l'utilisation du while n'était pas une bonne idée ?

Merci d'avance de vos conseils.

@++