Fonction Wait en C++
Résolu
totodude
-
Mansouri -
Mansouri -
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:
- C++ wait
- Updating biss key please wait ✓ - Forum TNT / Satellite / Réception
- Code Programme national ENTV : Key biss ✓ - Forum TV & Vidéo
- Comment entrer le Key biss de la entv dans une télé stream system avec un démo i - Forum TV & Vidéo
- A start job is running for wait for network to be configured ✓ - Forum Ubuntu
- BISS key - Forum TV & Vidéo
13 réponses
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
un debutan
tu es un bon programmeur
Mansouri
Merci bien