IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Le timeval de mon select ne se déclenche pas


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut 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 : 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;
    }
    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.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Aucun entier ne peut pas être à la fois égal à 0, et strictement supérieur à 0
    De même qu'aucun entier ne peut être à la fois égal à -1, et strictement supérieur à 0.

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut
    Merci matafan !
    Je t'avoue que parfois, en restant des heures sur ce genre de programme ultra simple, je suis tout de même incapable de trouver quelle bêtise j'ai pu faire !

    encore merci et désolée du dérangement !!!
    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
     
    (...)
    if(r>0)
    		{
    			printf("Il y a %d descripteurs eligibles\n", r);
     
    			if(FD_ISSET(0, &set1))
    			{
    				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");
    		}
    (...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon trigger ne se déclenche pas
    Par awalter1 dans le forum SQL
    Réponses: 4
    Dernier message: 23/01/2013, 15h57
  2. Comment récupérer mon SELECT en mémoire ?
    Par Invité dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/03/2006, 05h09
  3. mon select ne marche pas.
    Par Aurèl90 dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 01/12/2005, 15h59
  4. (urgent) Erreur dans mon select à cause du NOT IN
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/11/2005, 20h28
  5. mon select count(*) marche pas
    Par zorba49 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 05/08/2005, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo