Fonction Wait en C++

Résolu
totodude -  
 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

13 réponses

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
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 :
#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
6
un debutan
 
tu es un bon programmeur
1
Mansouri
 
Merci bien
0