Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge

Kontrolliertes Beenden eines C/C++ Prg. bei Systemende...

Mdl / 7 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
welches bs ??? PaoloP
Mdl Nachtrag zu: „Dafür benutze ich den C Builder 6. Es muss nämlich auch unter früheren...“
Optionen

> Aber - beim Nachschauen gerade - ist mir die Idee gekommen, mal zu prüfen, ob das vielleicht bei einem Wert ungleich SIGINT funktioniert. Ich teste das am besten gleichmal....

Hat auch prima geklappt (mit SIG_BREAK):

Der Funktionsaufruf
signal(SIG_BREAK, signal_handling_fct);

definiert signal_handling_fct() als Funktion, die ausgeführt wird, wenn ein entsprechendes Signal ankommt. Bei mir deklariert als
void signal_handling(int sig);
Es hat sich gezeigt, dass sowohl der Klick auf das [x]-Symbol zum Schließen des Fensters, als auch das Herunterfahren das Systems ein solches Signal an das Programm übermittelt.

In meinem Prg. setzte ich innerhalb von signal_handling_fct() also die globale Variable DoAbort=true (s.o.).

Damit habe ich jetzt das Gewünschte erreicht: Kein Blockieren mehr beim Herunterfahren des Systems...

Viele Grüße,

Mdl




bei Antwort benachrichtigen