Programm x Sekunden laufen lassen



  • so eine schweinerein aber auch! Side, ich bin wirklich zutiefst erschüttert! 😉 😃



  • OK, dann geb ich jetzt mal ein Beispiel ohne Erklärung: 😉

    #include <pthread.h>
    #include <stdio.h>
    
    struct timer_thread_ctl {
      int interrupt;
      unsigned seconds;
    };
    
    void *timer_thread(void *param) {
      struct timer_thread_ctl *ctl = param;
      sleep(ctl->seconds);
      ctl->interrupt = 1;
    }
    
    int main(void) {
      pthread_t timer_th;
      struct timer_thread_ctl th_ctl = { 0, 5 };
    
      pthread_create(&timer_th, NULL, timer_thread, &th_ctl);
    
      while(!th_ctl.interrupt) {
        puts("Hallo!");
        sleep(1);
      }
    
      return 0;
    }
    


  • Warum nicht einfach beim Programmstart die Zeit auslesen, speichern und dann regelmäßig die Zeit wieder abfragen und Differenz vergleichen?



  • @ Drucktaste:

    Genau vor dem Problem steh ich. Kann mir vielleicht jemand erklären, wie man Zeit speichert und dann regelmäßig die Differenz vergleicht? Denke das sollte mit einem Array gehen, oder?



  • time_t anfang;
    anfang = time(0);
    time_t now = time(0);
    int zeitspanne;   // zeit in secunden
    
    while(difftime(anfang,now)<zeitspanne)
    {
       now=time(0);
       // programmcode
    }
    

    *HOPING that that will work* 😃

    mfG (c)h



  • Ich würde mich hier auf mein Betriebssystem verlassen und Funktionen von diesem aufrufen.

    In Windows wäre dies ein einfaches SetTimer (x); und dann einfach auf die WM_TIMER Nachricht warten, wenn diese kommt beendest du das Programm, dann ist es nur x Sekunden gelaufen.



  • @ chille07

    Danke, du hattest nur einen kleinen Fehler. Es müsste difftime(now,anfang) heissen.



  • Auf welche Bibliothek greift denn sleep zurück..... ?

    Der verlangt bei mir irgendeine Bibliotheks-Datei und ich hab da keine Ahnung, welche ich davon nehmen muss bzw soll. 💡



  • cHillb3rT schrieb:

    Auf welche Bibliothek greift denn sleep zurück..... ?

    Der verlangt bei mir irgendeine Bibliotheks-Datei und ich hab da keine Ahnung, welche ich davon nehmen muss bzw soll. 💡

    windows:
    Sleep schreibt man groß.
    Die Headerdatei heisst <windows.h>

    mfG (c)h



  • pippo schrieb:

    @ chille07

    Danke, du hattest nur einen kleinen Fehler. Es müsste difftime(now,anfang) heissen.

    ja... stimmt!

    thanx (c)h


Anmelden zum Antworten