exit() ??
-
CStoll hat in einem Thread zuvor einen Hyperlink zu exit() (openBSD-Doku) gelegt wo die Antwort auf deine Frage steht...es ist halt so
-
meinst du das?
First, all functions registered by calls to atexit are executed in the reverse order of their registration. Then, all streams are closed and the temporary files deleted, and finally the control is returned to the host environment.
naja, bis auf den ersten satz macht den rest das OS (gilt jedenfalls unter win)
-
...returned to the host environment...
ist nicht immer unbedingt das OS...
-
Heap_und_Stack_fest schrieb:
...returned to the host environment...
ist nicht immer unbedingt das OS...
Ermmm, was dann?
-
Na, das weiß ich doch nicht! Aber es steht halt nicht OS in der Doku sondern Host Environment
-
Heap_und_Stack_fest schrieb:
Na, das weiß ich doch nicht! Aber es steht halt nicht OS in der Doku sondern Host Environment
Hmmm, vielleicht weil Host Environment es besser beschreibt wie Operating System??
-
Na, wohl eher das eben solche Fälle (die mir grad nicht einfallen) auch damit abgedeckt werden.
-
Heap_und_stack_fest schrieb:
Exit leistet aber sehr wohl noch ein gewisses Maß an Aufräumarbeit - im Stack - nicht aber im Heap...
exit räumt den Stack eben nicht auf. Das ist in C ja auch gar nicht notwendig, da es dort kein Destruktor-Konzept gibt. In C++ schon, daher ist exit und co in C++ nicht zu gebrauchen! (gibt bisher nur eine Ausnahme die ich kenne und wenn man auf diese Ausnahme trifft, weiß man eh das man exit nehmen muss. Daher die Regel: In C++ _nie_ exit und co!)
-
rüdiger schrieb:
Heap_und_stack_fest schrieb:
Exit leistet aber sehr wohl noch ein gewisses Maß an Aufräumarbeit - im Stack - nicht aber im Heap...
exit räumt den Stack eben nicht auf. Das ist in C ja auch gar nicht notwendig, da es dort kein Destruktor-Konzept gibt. In C++ schon, daher ist exit und co in C++ nicht zu gebrauchen! (gibt bisher nur eine Ausnahme die ich kenne und wenn man auf diese Ausnahme trifft, weiß man eh das man exit nehmen muss. Daher die Regel: In C++ _nie_ exit und co!)
ich bin mir aber nicht sicher, ob bei exit() nicht auch die destruktoren von globalen und statischen C++ objekten aufgerufen werden.
könnte aber schon sein, denn bei einem 'return' aus der main heraus wird das ja auch gemacht.
-
Unter Unix (spez. Linux, eine gute Beschreibung, was exit macht, findet man unter dem Linux/Unix Systemprogrammierung Buch) ist es nämlich so, dass exit die Funktionen aufruft, die man mit atexit definiert hat, dann wird eine cleanup Funktion aufgerufen und erst dann man: _exit(2) aufgeruft, was letztendlich den prozess vom Kernel beendet.
Before termination, exit() performs the following functions in the order
listed:1. Call the functions registered with the atexit(3) function, in
the reverse order of their registration.2. Flush all open output streams.
3. Close all open streams.
4. Unlink all files created with the tmpfile(3) function.