Faire une pause

Problème

Vous voulez temporiser le programme, le faire attendre un certain temps ou jusqu’à une certaine heure.

Solution

La solution qui convient généralement pour des durées longues est d’utiliser sleep() dont la précision est de l’ordre de la seconde, ou select() pour une meilleure précision.

Discussion

La fonction sleep() dispose d’un gros avantage sur toutes les autres méthodes : sa simplicité. Les inconvénients liés à l’utilisation de cette fonction sont que sa précision est du niveau de la seconde, et qu’il ne faut pas utiliser des signaux qui pourraient interrompre la pause. Cependant, dans de nombreux cas, cela suffit amplement. La fonction select() est généralement utilisée pour déterminer si des entrées ont eu lieu ou si des sorties sont possibles sur les descripteurs de fichiers. Mais cette fonction dispose aussi d’un paramètre permettant d’indiquer une valeur de dépassement de temps autorisé (timeout) dont nous tirons profit ici :


  struct timeval tv; 
 
  tv.tv_sec = 10; 
  tv.tv_usec = 0; 
 
  select (0, NULL, NULL, NULL, &tv);
 

Ce code effectue une pause de dix secondes. Nous pouvons jouer sur le champ tv_usec pour aller au niveau de la microseconde. Pour atteindre le niveau de la nanoseconde, pselect() utilise une variable de type struct timespec au lieu du struct timeval de select(). Mais il ne faut pas non plus rêver et...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Convertir une chaîne de caractères en estampille ou en struct tm
Suivant
Calculer le temps mis par un extrait de programme à s'exécuter