atexit()-problem
-
hallo leute
ich hab ein kleines problem mit atexit()
denn wenn mein programm schielßt dann wird die funktion die bei atexit() steht nicht ausgeführt.unsigned long WINAPI ThreadFunktion(LPVOID dummy) { while(1) { // code } } void Close(void) { dat.close(); MessageBox(0, "", "", MB_OK); } int main() { unsigned long ThreatID, ThreatParam = 1; CreateThread(NULL, 0, &ThreadFunktion, &ThreatParam, 0, &ThreatID); atexit(Close); return 0; }die Close() funktion wird nicht ausgeführt...
vielleicht könnt ihr mir sagen wo ich den fehler gemacht hab...mfg killakathl
-
Wenn mich jetzt nicht alles täuscht, dann musst du dein Programm mit exit(), das alle von atexit() registrierten Funktionen aufruft, beenden. Hab jetzt leider keinen Compiler hier. Probier's einfach mal aus
unsigned long WINAPI ThreadFunktion(LPVOID dummy) { while(1) { // code } } void Close(void) { dat.close(); MessageBox(0, "", "", MB_OK); } int main() { unsigned long ThreatID, ThreatParam = 1; CreateThread(NULL, 0, &ThreadFunktion, &ThreatParam, 0, &ThreatID); atexit(Close); exit(0); }
-
Xul schrieb:
Wenn mich jetzt nicht alles täuscht, dann musst du dein Programm mit exit(), das alle von atexit() registrierten Funktionen aufruft, beenden.
Im C++ Standard finde ich nichts, dass diese Aussage stützen würde. Dort wird von "normal program termination" gesprochen und das schließt auch ein simples return aus main ein.
@killakathl
Welchen Compiler benutzt du?
-
Das msdn Beispiel ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_atexit.asp ) sieht auch ganz normal aus, Meyers hat in MEC++ auch was drübert stehen...
MfG
GPC
-
Atexit()
is STD Cguckstu iso/ansi C.....
da können di dir bessa helfen denk ich
-
killakathl schrieb:
denn wenn mein programm schielßt dann wird die funktion die bei atexit() steht nicht ausgeführt.
probier' mal vorher den thread zu beenden. sollte eitlich auch so gehen, aber man weiss ja nie....
btw: wenn du z.b. den close button des konsolenfensters klickst wird die funktion auch nicht ausgeführt. das ist aber normal
-
also ich benutz den visual c++ 6.0
also es is so das das ganze programm so lang leuft bis der pc heruntergefahren wird. was ich mitbekommen hab wird dem programm ne message geschickt das es sich ausschaltet. und mein problem is jetz eigendlich nur das ich die datei vorher noch schließen muss da sonst die daten verloren gehn die ich reinschreiben will...mfg killakathl
-
killakathl schrieb:
also ich benutz den visual c++ 6.0
also es is so das das ganze programm so lang leuft bis der pc heruntergefahren wird. was ich mitbekommen hab wird dem programm ne message geschickt das es sich ausschaltet. und mein problem is jetz eigendlich nur das ich die datei vorher noch schließen muss da sonst die daten verloren gehn die ichdas kriegste damit mit: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setconsolectrlhandler.asp
ist besser als atexit()