Vermutlich eine ganz einfach zu beantwortende Frage, aber:
Sollte ich am Ende von main() "return" oder "exit" verwenden? Ich habe in den Manualseiten zu exit(3) (Linux und OpenBSD) gelesen, dass exit(3) zuerst noch "aufräumt", bevor es das Programm beendet (offene Dateideskriptoren, etc.).
Auf der anderen Seite habe ich gelesen, dass return und exit am Ende von main() das gleiche machen. Bin jetzt ein wenig verwirrt, da ich unter OpenBSD dieses Verhalten getestet habe. Ich habe dabei folgende Programme genutzt:
und
Das ganze habe ich dann mit "gcc -S exit.c" und "gcc -S return.c" in Assembler übersetzen lassen. Das Resultat war, dass es nicht der gleiche Code war, wie man annehmen müsste:
"exit" hat die Stackprotection abgebrochen und hat das Programm sofort beendet, während "return" dafür sorgte, dass die Stackprotection die abschließende Überprüfung durchgeführt hat.
Daher weiß ich nun überhaupt nicht weiter, wann ich exit(3) und wann ich return nutzen sollte. Ich hoffe, ihr könnt mir weiterhelfen.
Sollte ich am Ende von main() "return" oder "exit" verwenden? Ich habe in den Manualseiten zu exit(3) (Linux und OpenBSD) gelesen, dass exit(3) zuerst noch "aufräumt", bevor es das Programm beendet (offene Dateideskriptoren, etc.).
Auf der anderen Seite habe ich gelesen, dass return und exit am Ende von main() das gleiche machen. Bin jetzt ein wenig verwirrt, da ich unter OpenBSD dieses Verhalten getestet habe. Ich habe dabei folgende Programme genutzt:
Code:
int
main(int argc, char *argv[])
{
return 0;
}
und
Code:
#include <stdlib.h>
int
main(int argc, char *argv[])
{
exit(0);
}
Das ganze habe ich dann mit "gcc -S exit.c" und "gcc -S return.c" in Assembler übersetzen lassen. Das Resultat war, dass es nicht der gleiche Code war, wie man annehmen müsste:
"exit" hat die Stackprotection abgebrochen und hat das Programm sofort beendet, während "return" dafür sorgte, dass die Stackprotection die abschließende Überprüfung durchgeführt hat.
Daher weiß ich nun überhaupt nicht weiter, wann ich exit(3) und wann ich return nutzen sollte. Ich hoffe, ihr könnt mir weiterhelfen.