[C] Select et timer

Select et timer [C] - C - Programmation

Marsh Posté le 28-05-2004 à 16:04:28    

Bonjour,
 
J'utilise pour une appli la fonction select() avec un systeme de timer.
J'aimerais pouvoir connaitre, quand j'ai un FD qui se reveille, le nombre de milliseconde qui reste dans mon timeout...
 
Est ce possible en utilisant la meme structure timeval que j'ai utilisee dans le select sans avoir a rajouter un autre compteur avec un gettimeofday ?
 
Merci de vos reponses.

Reply

Marsh Posté le 28-05-2004 à 16:04:28   

Reply

Marsh Posté le 28-05-2004 à 16:57:15    

Extrait du man:
 

Code :
  1. The  select  function may update the timeout parameter to indicate how much time was left.

Reply

Marsh Posté le 28-05-2004 à 17:06:10    

hum, moi j'ai ca dans mon manuel:
 

Citation :

select() should probably return the time remaining from the original timeout, if any, by modifying the time value in place.  This may be im-plemented in future versions of the system.  Thus, it is unwise to assume that the timeout value will be unmodified by the select() call.


 
va comprendre charles :)
je me demandais justement pourquoi ca marchait pas...
je fais un truc comme ca:
 
 

Citation :

struct timeval    tv;
tv.tv_sec = 10;
...
select(maxfd + 1, &fds_r, (fd_set *) 0, (fd_set *) 0, &tv)
...


 
mais ma valeur tv_sec ne se decremente pas...


Message édité par Bobarctor le 28-05-2004 à 17:07:13
Reply

Marsh Posté le 28-05-2004 à 17:15:20    

bon donc c'est bien ce que je pensais c'est pas portable autre que sous linux (je suis sur BSD).
 
Quelqu'un a une idee de methode propre pour faire ca avant que je reecrive select() ?
 
:)

Reply

Marsh Posté le 28-05-2004 à 19:51:33    

C'est con ça paske je viens d'essayer et ça marche très bien sous linux! Désolé...  
De toutes façons, le man déconseille d'utiliser le timeout:

Code :
  1. Consider timeout to be undefined after select returns


 
Je crois que je t'ai trouvé une source de select: http://www.bgnett.no/~giva/watt-doc/a01694.html
 
Mais je te conseillerais plutôt de faire la solution que tu proposais au départ (un gettimofday).


Message édité par torpe23 le 28-05-2004 à 19:59:27
Reply

Marsh Posté le 29-05-2004 à 15:27:50    

etrange en effet, et la valeur de tv_usec?

Reply

Marsh Posté le 03-06-2004 à 15:29:18    

bon en fait je l'ai reecrit avec un gettimeofday, ca marche bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed