Programm sauber beenden



  • Hallo,

    ich bin zzt. mit einem kleinen C-Projekt beschäftigt das auf eine Schnittstellenkarte zugreift.

    Jetzt möchte ich die Möglichkeit einbauen, das Programm jederzeit (es läuft min 12 bis max 60h) sauber zu beenden wenn ich eine bestimmte Tastatureingabe mache.
    Vor dem eigentlichen beenden soll noch eine Funktion aufrufen werden.
    Wie gesagt, ich möchte das laufende Programm beenden können und nicht in jedem Schleifendurchlauf auf eine Tastatureingabe warten. 🙂

    Wie kann ich das realisieren??

    michael



  • Du könntest einfach auf Signale reagiert, z.B. Strg + C -> SIGINT.

    Und dann vielleicht sowas hier:

    static void
    sig_exit(int n)
    {
    	TODO...
    }
    
    static void
    signals_register(void)
    {
    	struct sigaction sa;
    
    	memset(&sa, 0, sizeof(struct sigaction));
    	sigemptyset(&sa.sa_mask);
    	sa.sa_handler = sig_exit;
    	sigaction(SIGINT, &sa, NULL);
    }
    
    int
    main(int argc, char *argv[])
    {
    	....
    	signals_register();
    	....
    }
    

    Ka, ob das die beste Art ist, Signale zu registiert aber so benutze ich das.



  • Ah, damit werd ich mich mal auseinandersetzen. 🙂

    Vielen Dank!

    michael



  • Unter einem POSIX konformen System könntest du man: atexit(3) benutzen.


Anmelden zum Antworten