Le timeval de mon select ne se déclenche pas
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 :
Code:
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;
} |
Si je ne saisit rien, alors le programme ne s'arrête pas (alors qu'il le devrait au bout de 3,5 sec)
Merci d'avance.