Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Esecuzione di una funzione ogni 3 minuti
Forum - C/C++ - Esecuzione di una funzione ogni 3 minuti

Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 18:58
Venerdì, 10/06/2011
Ciao a tutti,

in un programma in C ho la necessità di eseguire una funzione una volta ogni x minuti,se accade una determinata condizione (un flag che si alza) mentre il resto del programma va avanti.

può essere una soluzione creare un altro processo e con la funzione sleep aspettare x minuti e poi chiamare la funzione o c'è un sistema migliore per farlo? (lavoro su linux)

Codice sorgente - presumibilmente Plain Text

  1. .
  2. .
  3. .
  4. if(flag)
  5.    if(fork()==0){
  6.       sleep(100);
  7.       funzione();
  8. }
  9. .
  10. .
  11. .


Ultima modifica effettuata da Alex il 10/06/2011 alle 18:59
PM Quote
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 17:07
Domenica, 19/06/2011
Un approccio un po' diverso ma con lo stesso risultato sarebbe
creare un thread in cui (come dicevi giustamente tu) inserire uno sleep
e poi la chiamata tipo:

Codice sorgente - presumibilmente Plain Text

  1. ... funzione()
  2. {
  3.    while(condizione_per_far_continuare)
  4.        {
  5.             Sleep(x);
  6.             funzione_da_eseguire_ogni_x_min(...);
  7.        }
  8. }
  9.  
  10. ...
  11. pthread_create(...funzione...);
  12. ...


PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 21:34
Lunedì, 20/06/2011
mi piace di più il tuo sistema..grazie mille!

PM Quote
Avatar
ManfroC (Ex-Member)
Rookie


Messaggi: 26
Iscritto: 15/05/2011

Segnala al moderatore
Postato alle 14:15
Mercoledì, 03/08/2011
Se usi windows ti puoi agganciare all'orologio di sistema e fare in modo che ogni 3 minuti scatti la funzione...tipo..


#include <windows>

SYSTEMTIME time;
int app;

int main ( int argc , char *argv[] )
{
    GetLocalTime(time,0);
    
    app=time.wMinute+3;

    while
    {
        if ( time.wMinute == app )
        {
               app = time.wMinute+3;
               isruzioni
        }
    
    }
  return 0;
}

    

PM Quote