timer



  • Hallo, ich würde gerne einen timer machen, der neben dem Programm läuft und immer zu einer bestimmten zeit etwas ausführt.

    Hoff ihr versteht was ich mein.

    Wie mache ich das?



  • hmm kommt drauf an ... am einfachsten, wenn de plattform unabhängig sein willst, öffnest de einen neuen thread ... lässt da drin dann eine schleife laufen ... und wenn eine gewisse Zeit vergangen ist lässt de die eine Funktion ausführen ... usw ^^



  • Muss nich Plattformunabhängig sein, arbeite mit Suse Linux.
    Was ist ein thread?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vielleicht solltest du zuerst ein Buch über das Programmieren in einer Unix Umgebung durchlesen.

    Aber hier mal ein Beispiel, wie man es machen könnte:

    #include <iostream>
    
    extern "C" {
    #include <pthread.h>
    #include <unistd.h>
    }
    
    // Wait 10 seconds
    static const int WAITTIME = 10;
    
    extern "C" void * comain(void *) {
    
       // Detach this thread. pthread_join is no longer neccessary.
       pthread_detach(pthread_self());
    
       // Wait the specified time
       sleep(WAITTIME);
    
       // Perform desired action
       std::cerr << "Waited " << WAITTIME << " seconds." << std::endl;
    
       // Quit the thread
       return NULL;
    }
    
    int main() {
    
       //Create co thread.
       pthread_t tid;
       pthread_create(&tid, NULL, comain, NULL);
    
       //Endless loop;
       while (true);
    }
    


  • Ich hab folgende Funktionen in einem C-Programm benutzt : timer_create und timer_settime.
    Bei der kompilation liefert KDevelop mir aber die Meldung:
    processus1.c:(.text+0x80): undefined reference to timer_create' processus1.c:(.text+0xde): undefined reference totimer_settime'

    Die time.h hab ich included... (superdeutsch)

    Wäre schön wenn ihr mir helfen könnt



  • man: alarm man: setitimer

    @jtommi
    Die Funktionen gibt es anscheinend nicht.



  • @ rüdiger

    ein Freund hat Gentoo, da laufen die Funktionen...
    Leider bin ich nich Linuxgeübt genug um mir Gentoo drauf zu tun.



  • jtommi schrieb:

    Ich hab folgende Funktionen in einem C-Programm benutzt : timer_create und timer_settime.
    Bei der kompilation liefert KDevelop mir aber die Meldung:
    processus1.c:(.text+0x80): undefined reference to timer_create' processus1.c:(.text+0xde): undefined reference totimer_settime'

    Die time.h hab ich included... (superdeutsch)

    Wäre schön wenn ihr mir helfen könnt

    gegen librt linken
    also
    -lrt bei ldfalgs oder ldadd dazutun, dann sollts gehn



  • @daHa

    Da komm ich nich ganz mit...
    Muss ich das im makefile irgendwo dazu schreiben?



  • Hallo,

    im einfachsten Fall:

    gcc -lrt -O deinequellcodedatei.c -o derausführbbinaercode.bin
    

    Gruss Alex



  • jtommi schrieb:

    @daHa

    Da komm ich nich ganz mit...
    Muss ich das im makefile irgendwo dazu schreiben?

    du verwendest kdevelop?

    ein automake projekt, oder ein anderes (qmake, cmake, eigene makefiles)?

    default is automake, also geh ich mal davon aus

    variante 1:
    im automakemanager rechtsklcik aufs target( programmname in bin) sollt dort stehn,
    Einstellungen
    Karteikarte Libraries
    dort unten linke bibliotheken ausserhalb des projekts
    hinzfuegen
    -lrt

    oder, variante 2
    Menu Projekt
    Projekt Einstellungen
    Einstellungen fuer configure
    dort bei linkerschalter -lrt hinschreiben

    wenn du eins von beiden geamcht hast und dein projekt linkt, dann suchmaschiene deiner wahl benutzen um ein bisschen was zum thema linken ggen libraries nachlesne, ldflags ist eh ein gutes stichwort



  • ich habs, es klappt, danke


Anmelden zum Antworten