Bonjour,
j'ai fait un petit programme de test pour tester un select avec un timeval, mais celui-ci ne se déclenche pas, je ne comprends pas pourquoi...
C'est un test tout simple, qui lit une ligne au clavier et si rien n'est saisi au bout de 3,5 secondes, alors il doit s'arrêter.
Voilà mon code :
Si je ne saisit rien, alors le programme ne s'arrête pas (alors qu'il le devrait au bout de 3,5 sec)
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 #include <stdio.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int main() { fd_set set; struct timeval tv; int r; while(1) { //initialisation de la liste FD_ZERO(&set); FD_SET(0, &set); //initialisation du timeval à 3,5 sec tv.tv_sec=3; tv.tv_usec=500000; r = select(0+1, &set, NULL, NULL, &tv); if(r>0) { if(FD_ISSET(0, &set)) { char s[1000]; int k; k = read(0, s, 999); if(k<0) {perror("read"); exit(1);} s[k] = 0; printf("Lu : %s ", s); } else if(r==0) { printf("Delai ecoule\n"); break; } else { perror("select"); } } } return 0; }
Merci d'avance.
Partager