IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Executer une fonction tout les X minutes


Sujet :

C

  1. #1
    Fabouney
    Invité(e)
    Par défaut Executer une fonction tout les X minutes
    Bonjour,

    Ma question est en grande partie dans le sujet du topic, j'aimerais en effet executer une fonction toute les X minutes, si vous pouvez me mettre sur la voie, via un exemple, ainsi que les lib ou autres à utiliser, j'en serais ravis, merci à tous et à toute


    Cordialement.

  2. #2
    Membre du Club

    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Août 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 33
    Points : 64
    Points
    64
    Par défaut
    J'suis pas certain d'avoir compris ton problème, y'a notament un point flou : tu souhaitte exécuter ta fonction toutes les X minutes, mais entre temps, le programme doit être actif ou pas ?

    Parceque si ça n'est pas le cas ça revient un peu au topic juste à coté où on cherchait à faire une pause de x microsecondes

    Pour ton problème donc une solution serait de faire un appel à ta fonction, puis une pause de X minutes, puis appel à ta fonction , etc...

    Sous windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <windows.h>
    while(1) {
        ta_fonction();
        Sleep(x*1000*60); //Sleep fait une pause de x millisecondes.
    }
    Sous linux (ou un system posix quelconque)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <unistd.h>
    while(1) {
        ta_fonction();
        sleep(x*60); //sleep fait une pause de x secondes.
    }
    Bon, ça c'est la méthode barbare qui considère que ton traitement est instantané, ou du moins que sa durée est négligeable devant la précision voulue

    Si tu veux faire plus propre tu peux utiliser time.h.
    Par exemple, tu gardes en mémoire une date (initialisé au lancement de ton prog), tu fais un while avec des petits sleep. A chaque tour de boucle tu regarde l'heure qu'il est. Si l'écart entre la dernière heure mémorisé et l'heure actuelle est supérieure à X minutes, tu exécute ta fonction, et tu dis que la nouvelle date mémorisé c'est la date que tu avait mémorisé avant + X minutes.

    Enfin bref, ça c'est que des idées vite fait, et qui ne fonctionne que si tu n'as pas à utiliser ton prog entre chaque appel de fonction ^^


    edit : bonne remarque, j'ai été trop vite (comme souvent lol) sleep sous nux prend évidemment en argument des secondes,et pas des millisecondes C'est rectifié

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, le temps de sleep() unixoïde est en secondes.
    C'est le Sleep() de Windows qui accepte des millisecondes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Tu peux utiliser les Timers.Le code sera fonction de ton OS.Windows = CreateTimer ( voir msdn) sous nux voir settitimer...
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  5. #5
    Fabouney
    Invité(e)
    Par défaut
    tu souhaitte exécuter ta fonction toutes les X minutes, mais entre temps, le programme doit être actif ou pas ?
    euh oui en fait mon prog est lancé, et c la qu'il commence a executer toutes les X minutes une fonction.
    je ne vois tjr pas comment faire

    merci pr vos réponse

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Fabouney
    euh oui en fait mon prog est lancé, et c la qu'il commence a executer toutes les X minutes une fonction.
    je ne vois tjr pas comment faire
    On l'a dit précédemment : utiliser un timer !
    Sinon l'usage de sleep n'est pas fait pour cela; sleep temporise un point c'est tout

  7. #7
    Fabouney
    Invité(e)
    Par défaut
    auant pour moi, merci pour tout, je vais look tout ça.

Discussions similaires

  1. Exécuter une fonction toutes les 2 minutes en VB.NET
    Par sihammaster dans le forum VB.NET
    Réponses: 3
    Dernier message: 14/10/2012, 00h29
  2. Exécuter une fonction toutes les X minutes ?
    Par corgato dans le forum Qt
    Réponses: 8
    Dernier message: 27/01/2009, 10h29
  3. Lancer une fct toutes les x minutes
    Par mambo dans le forum MFC
    Réponses: 8
    Dernier message: 21/06/2006, 23h16
  4. Réponses: 8
    Dernier message: 09/01/2006, 16h58
  5. Réponses: 9
    Dernier message: 14/12/2005, 21h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo