Comment puis-je exprimer 10 millisecondes en utilisant timeval?Comment puis-je exprimer 10 millisecondes en utilisant timeval?
C'est ce que j'ai jusqu'à présent:
struct timeval now;
now.tv_usec =10000;
Comment puis-je exprimer 10 millisecondes en utilisant timeval?Comment puis-je exprimer 10 millisecondes en utilisant timeval?
C'est ce que j'ai jusqu'à présent:
struct timeval now;
now.tv_usec =10000;
A struct timeval
représente un temps un certain nombre de secondes (tv_sec
) plus un certain nombre de microsecondes (tv_usec
) entre 0 et 999999. Ainsi, pour représenter 10 millisecondes, vous devez utiliser 10.000 microsecondes, comme vous le suggérez:
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 10000;
+1 pour définir les deux champs de l'heure. – RBerteig
Juste un petit point. Selon http://www.gnu.org/s/hello/manual/libc/Elapsed-Time.html, la valeur de tv_usec est toujours inférieure à un million, c'est-à-dire entre 0 et 999 999. Sinon, vous pourriez représenter une seconde dans les deux champs tv_sec et tv_usec, ce qui n'a pas de sens selon leur définition. – binarybob
@binarybob bon point, pas si petit en fait si vous devez allouer char tampon de taille correcte pour microsecondes – 4pie0
il est
struct timeval {
int tv_sec; // seconds
int tv_usec; // microseconds!
maintenant.
tv_sec = 0;
tv_usec = 10000;
` aurait droit
Sauf que le champ tv_sec est (probablement) non initialisé et donc probablement pas zéro. Il serait plus sûr de le mettre explicitement à zéro afin que l'intention soit claire. – RBerteig
Mais, dans ce cas, tv_sec ne serait pas correctement initialisé, ce qui pourrait créer des problèmes. Soit memset() ou assigner zéro à tv_sec. – bortzmeyer
ouais je suis d'accord, l'a réparé. – Silfverstrom
Pour un cas plus général convertir les millisecondes à utiliser struct timeval:
int milliseconds = 10;
struct timeval now;
now.tv_sec = milliseconds/1000;
now.tv_usec = (milliseconds % 1000) * 1000;
Pourquoi downvote? Cette question semble légitime. – Nate