Fonction Wait en C++
Résolu/Fermé
Salut tout le monde,
j'ai un pb en C++. mon prog n'attend pas une ligne de commande, ce qui a pour effet qu'il continue comme si elle n'avait pas été la.
du coup je voudrais mettre un truc du genre "Wait(temps)"
quelqu'un connaitrai la commande et les parametres a passer ?
merci bcp
tom
j'ai un pb en C++. mon prog n'attend pas une ligne de commande, ce qui a pour effet qu'il continue comme si elle n'avait pas été la.
du coup je voudrais mettre un truc du genre "Wait(temps)"
quelqu'un connaitrai la commande et les parametres a passer ?
merci bcp
tom
A voir également:
- Cpp wait
- Dev cpp - Télécharger - Langages
- Updating biss key please wait ✓ - Forum TNT / Satellite / Réception
- A start job is running for wait for network to be configured ✓ - Forum Ubuntu
- Code Programme national ENTV : Key biss ✓ - Forum TV & Vidéo
- Modulo cpp ✓ - Forum C++
13 réponses
mamiemando
Messages postés
33636
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2025
7 842
7 sept. 2007 à 10:07
7 sept. 2007 à 10:07
L'idée de faire une boucle for vide est mauvaise car les ordis récents vont la passer quasi instanément même avec une grande valeur. De plus le comportement sera différent d'une machine à l'autre.
La commande wait ne sert pas à attendre un certain temps mais attends un signal (cf cours de système).
http://pwet.fr/man/linux/appels_systemes/wait/
Voici une manière plus ou moins propre de faire et qui se comportera toujours de la même façon :
Le problème c'est que ta charge CPU reste à 100% pendant l'attente des 2 secondes ce qui est un peu dommage vu qu'on ne fait rien. C'est pour ça que faire une boucle est une mauvaise idée. En fait il faut simplement endormir ton processus pendant tmax secondes :
Bonne chance
La commande wait ne sert pas à attendre un certain temps mais attends un signal (cf cours de système).
http://pwet.fr/man/linux/appels_systemes/wait/
Voici une manière plus ou moins propre de faire et qui se comportera toujours de la même façon :
#include <ctime> #include <iostream> int main(){ time_t t0 = time(NULL); unsigned tmax = 2; std::cout << "j'attends " << tmax << " secondes" << std::endl; while(static_cast<unsigned>(time(NULL)-t0) < tmax); std::cout << tmax << "s écoulées" << std::endl; return 0; }
Le problème c'est que ta charge CPU reste à 100% pendant l'attente des 2 secondes ce qui est un peu dommage vu qu'on ne fait rien. C'est pour ça que faire une boucle est une mauvaise idée. En fait il faut simplement endormir ton processus pendant tmax secondes :
extern "C"{ #include <unistd.h> } #include <iostream> int main(){ unsigned tmax = 2; std::cout << "j'attends " << tmax << " secondes" << std::endl; sleep(tmax); std::cout << tmax << "s écoulées" << std::endl; return 0; }
Bonne chance
4 juin 2017 à 22:06
19 oct. 2017 à 13:18