Bonjour ! voici le code source que j'ai écrit :
je veux à chaque itération de cette boucle faire le traitement suivant :Code:#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> void main( ) { fd_set rfds; struct timeval tv; int retval; /* Surveiller stdin (fd 0) en attente d’entrées */ FD_ZERO(&rfds); FD_SET(0, &rfds); /* Attends jusqu’à 5 secondes. */ tv.tv_sec = 5; tv.tv_usec = 0; while(1) { retval = select(1, &rfds, NULL, NULL, &tv); if (retval == -1) perror("select()"); else if (retval) printf("Des données sont disponibles \n"); /* FD_ISSET(0, &rfds) est alors vrai. */ else printf("Aucune donnée durant les cinq secondes.\n"); } }
- si aubout de 5 seconde j'ai rien tapé, il m'affiche "Aucune donnée.."
- si je tape une donné avant l'expiration de 5 s, il m'affiche"donnée diponible ..."
je dit bien pour chaque itération de la boucle.
le problème est que la boucle sans fin va afficher infinément aucune donné.
a priori la fonction select n'est pas exécuté une seule fois .
j'ai besoin de votre aide
-----