Cronjob in C++



  • Hallo,
    ich möchte eine Art Cronjob in C++ implmentieren. Die Funktion foo() soll zu bestimmten Tagen zu einer bestimmten Uhrzeit ausgeführt werden. Wie macht man das? Ich würde eine Endlossschleife laufen lassen und mit ctime den Tag und die Uhrzeit holen und abgleichen und wenn die Bedingungen erfüllt sind, die Funktion ausführen lassen. Wäre das so der richtige Ansatz?



  • @asd1 Das würde einen Prozessorkern fast vollständig auslasten.
    Also macht man es so nicht.

    Wenn du das Programm in der Schleife schlafen legst (1 Sekunde reicht), geht es.

    Aber warum nicht cron?



  • Hi,
    geht nicht mit Cron. Es ist eine Teilfunktion einer C++-Applikation und ich will das alles in einem haben ohne, dass ich noch grossartig an dem Server was machen muss. Es sollte möglichst unabhängig vom Server sein.
    Ja, ich wollte eine Endlosschleife machen mit std::this_thread::sleep_for(std::chrono::seconds(60)) als Schlaffunktion.


  • Mod

    Rechne dir doch im Voraus aus, wie lange du warten musst.



  • @asd1 sagte in Cronjob in C++:

    sleep_for

    Statt sleep_for kannst du auch gleich sleep_until nehmen. Dann brauchst du nicht einmal selbst die Zeitdifferenz auszurechnen 🙂



  • @asd1 sagte in Cronjob in C++:

    Ja, ich wollte eine Endlosschleife machen mit std::this_thread::sleep_for(std::chrono::seconds(60)) als Schlaffunktion.

    Grundsätzlich finde ich das mal gar nicht so verkehrt. Allerdings finde ich es auch immer gut wenn man Anwendungen sauber beenden kann, und das ohne Threads einfach wegsterben zu lassen und ohne ne Minute zu warten.

    Was jetzt aber schwierig ist, wenn du sleep_for(60s) verwendest. Du kannst aber statt condition_variable::wait_for statt sleep_for verwenden. Die condition_variable kannst du dann "benachrichtigen" wenn du das Programm bzw. den "cron job thread" beenden willst.


Anmelden zum Antworten