Je voulais aussi faire un programme qui exécute une fonction toutes les x minutes ou heures et je l'ai trouvé de nombreux exemples, mais pour le faire, il était nécessaire d'inclure et de télécharger une bibliothèque, et pour moi il était mal à l'aise et j'ai fait moi-même, pas logique même)) mais cela fonctionne, vous pouvez le voir ci-dessous
#include <stdlib.h>
#include <iostream>
#include <time.h>
using namespace std;
struct tm *addtime(struct tm *tm2)
{
time_t t = time(0); // get time now
struct tm * tm1 = localtime(& t);
cout << " Time begin : " << tm1->tm_hour << " : " << tm1->tm_min <<endl;
struct tm * aux = (struct tm*)malloc(sizeof (struct tm));
aux->tm_sec = tm1->tm_sec + tm2->tm_sec;
aux->tm_min = tm1->tm_min + tm2->tm_min + (aux->tm_sec/60) ;
aux->tm_hour = tm1->tm_hour + tm2->tm_hour + (aux->tm_min/60);
aux->tm_min %= 60;
aux->tm_sec %= 60;
return (aux);
}
bool verif_time(struct tm *tm1)
{
time_t t = time(0); // get time now
struct tm * now = localtime(& t);
if (tm1->tm_hour == now->tm_hour && tm1->tm_min == now->tm_min)
return true;
else
return false;
}
int main()
{
struct tm * after = (struct tm*)malloc(sizeof (struct tm));
after->tm_sec = 0; // here you can modify difference between now time and time when you want to execute function
after->tm_min = 1;
after->tm_hour = 0;
after = addtime(after);
cout << " After time" << after->tm_hour << ':' << after->tm_min<<endl;
while (true)
{
if (verif_time(after))
{
cout << "Hello " << after->tm_hour << " : " << after->tm_min<<endl; //here you can include your function
after->tm_sec = 0;
after->tm_min = 1;
after->tm_hour = 0; // here also
after = addtime(after);
cout << " After time" << after->tm_hour << ':' << after->tm_min<<endl;
}
}
}
Quel compilateur utilisez-vous? – Jacob
J'utilise gcc 4.4.1 – wyatt
Un retardateur de fond seul ne le couperait pas; Il est tout à fait possible qu'en essayant de lire un flux, votre programme expirerait sur un appel réseau pour une raison qui n'est pas en votre pouvoir, et cela signifierait que votre programme se bloquerait également dans ce cas. Pour résoudre correctement les deux problèmes, vous devrez entrer dans le monde magique du multithread ... – Jon