Wie kann ein Konsolenprogramm, d.h. dessen Source-Code in C/C++ kontrolliert beendet werden, wenn der User z.B. das Fenster schließen will, d.h. auf [x] oben rechts im Fensterrahmen klickt oder Windows herunterfährt?
Ich habe in mein Prg. zwar eine entspr. Reaktion auf CTRL-C einbauen können, aber das scheint mit für obiges nicht auszureichen.
Wenn ich jezt das System herunterfahre, muss ich das Prg. sozusagen immer abschießen... Nicht gerade schön...
Vielen Dank für evtl. Tipps...
Mdl
Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge
Hi Mdl, für diesen Fall sieht C die funktion atexit(void *) vor.
Die Funktion atexit nimmt einen Pointer auf eine Funktion auf, die beim beenden des Programms ausgeführt wird. Auch wenn das Programm nicht regulär beendet wird, wird diese Funktion noch ausgeführt.
beispiel aus der ncurses programmierung (ich lasse < und > jetzt mal bei dne includes weg):
#include stdio.h
#include stdlib.h
#include ncurses.h
void quit(void)
{
//hier kommt dann das zeug zum ordentlichen beenden rein, in unserem fall wollen wir ncurses
//deinitialisieren
endwin();
}
int main(int argc, char **argv)
{
atexit(quit)
initscr();
refresh();
return 0;
}
wie du siehst wird beim start ein exit handler eingerichtet, die funktion quit soll beim beenden des programms ausgeführt werden. Wenn du das system herunterfährst, wird das programm auch beendet, und die funktion wird ausgeführt.
Dieses beispiel funktioniert unter windows und linux. Beachte dass ich zwar C verwendet habe, C jedoch eine teilmenge von C++ ist und dieses Beispiel also auch unter C++ funktionieren wird.
nähere informationen zu atexit wirst du hier finden:
http://openbook.galileocomputing.de/c_von_a_bis_z/c_022_003.htm#Xxx999331