Server-Prozess unter Win32 - sowas wie Signale unter Unix?



  • Hallo!

    Vorab erstmal: ich komme eigentlich aus der Unix-Welt und bin in Sachen Win32 teilweise ein Newbie 🙂

    Ich schreibe zZ an einer Server-Software, die unter Win32 (möglichst auch ganz normales Win2000/XP) und auch unter Unix lauffähig sein soll. Ich programmiere in purem C und mache Ausgaben nur in ein Logfile bzw evtl. auf der Konsole zum Debuggen.

    Momentan läuft die Testversion als ganz normales Kommandozeilenprogramm und lässt sich per Strg-C beenden, allerdings gibt es da ein Problem:

    Vor dem Beenden muss der Server noch einige Aufräum-Routinen abfahren damit beim nächsten Start der Zustand wieder korrekt eingelesen werden kann. Das passiert beim Abbruch per Strg-C natürlich nicht.

    Unter Unix habe ich vor, das Programm von der Konsole zu "detachen" und dann als Daemon im Hintergrund laufen zu lassen. Über verschiedene Signale lassen sich dann Dinge wie Konfig. abspeichern / neu laden oder Programm beenden triggern.

    Kommen wir jetzt zu meiner Frage: Wie bekomme ich dasselbe unter Windows hin?
    Ein klitzekleiner Link mit einer Erklärung vielleicht? Ich weiß leider nicht unter welchem Begriff ich googeln soll...

    Danke!



  • batzee schrieb:

    Vor dem Beenden muss der Server noch einige Aufräum-Routinen abfahren damit beim nächsten Start der Zustand wieder korrekt eingelesen werden kann. Das passiert beim Abbruch per Strg-C natürlich nicht.

    atexit()
    guckst du: http://mkssoftware.com/docs/man3/atexit.3.asp
    geht unter unix und windoof (jedenfalls für ctrl-c)

    batzee schrieb:

    Ich weiß leider nicht unter welchem Begriff ich googeln soll...

    wieso? du hast doch genug begriffe genannt



  • Aber funktionieren die Signale auch auf Win32? 😕 😃



  • net: atexit-Funktionen werden nur bei normaler Programmbeendigung aufgerufen. Das steht so auch in der Manpage, die du zitierst.



  • Ja du installierst einen CTRL-Handler, siehe dazu auch SetConsoleCtrlHandler() in der MSDN 👍

    Der Rest der hier steht ist übrigens Unfug 🙂

    MfG SideWinder



  • Bashar schrieb:

    net: atexit-Funktionen werden nur bei normaler Programmbeendigung aufgerufen. Das steht so auch in der Manpage, die du zitierst.

    stimmt. hatte irgendwie in erinnerung dass das geht. aber tuts doch nicht 😞
    sorry für die fehlinformation....



  • danke Sidewinder


Anmelden zum Antworten