Programm ohne weitere Ausgabe beenden?



  • hallo,
    ich habe eine frage..
    nach der eingabe von "guit" soll sich mein programm ohne weitere ausgabe beenden..

    ist das richtig, wenn ich es mit return 0; mache?

    danke für jede hilfe


  • Mod

    Ein return aus der main , egal mit welchem Wert, beendet das Programm. Ebenso ein Aufruf der Funktion exit , von egal wo im Programm. Das return und diese Funktion gelten als "normal program termination", das heißt, bevor das Programm tatsächlich beendet wird, passiert noch folgendes:
    1. Mit atexit registrierte Funktionen werden aufgerufen. Diese können theoretisch auch noch ausgaben machen.
    2. Alle offenen Streams werden geflushed und geschlossen, tmpfiles werden entfernt.
    3. Der Rückgabewert der main bzw. das Argument von exit werden an die ausführende Umgebung zurück gegeben
    4. Dann ist wirklich schluss.

    Dahingegen gibt es noch die _Exit -Funktion, welche mindestens den Schritt 1. überspringt, jedoch auch als "normal program termination gilt", das heißt Schritt 3. erfolgt auf jeden Fall. Ob 2. erfolgt ist "implementation defined".

    Als letztes gibt es noch die Funktion abort , die als "unsuccessful termination" gilt. Es finden die Schritte wie bei _Exit statt, aber bei 3. wird ein Fehlerwert zurück gegeben.

    Diese verschiedenen Abbruchszenarien können durch verschiedene Fehlerszenarien im Programm ausgelöst werden oder manuell durch Aufruf dieser Funktionen.

    Dies ist jetzt sehr kompliziert erklärt, aber manchmal haben einfache Fragen eben komplizierte Antworten, wenn man genau sein möchte. Höchstwahrscheinlich möchtest du aber wirklich nur ein einfaches return aus der main 🙂 .



  • ok ich verstehe..
    danke für deine hilfe 🙂


Anmelden zum Antworten