Beenden von Funktionen in C

8

Was ist der Unterschied zwischen exit () , _exit () und _Exit () in C?

Wie entscheide ich, welches ich verwenden soll?

Auf Bash,

  

man 2 beenden

gab mir die Seite _EXIT (2), während

  

mann 3 beenden

gab die Seite EXIT (3).

    
Jens Gustedt 07.09.2010, 10:09
quelle

4 Antworten

7

exit() wird nach der Bereinigung beendet.

_exit() wird sofort nach dem Aufruf beendet.

Wenn Sie einen Stack beschädigt haben, während exit() function aufgerufen wurde, kann das Programm mit Segmentierungsfehler schließen, wenn Sie _exit() verwenden, beenden Sie das Programm im Schnellmodus.

Von Ссылка haben Sie

exit() - Führt vollständige C-Bibliothek-Beendigungsvorgänge aus, beendet den Prozess und wird mit dem angegebenen Statuscode beendet.

_exit() - Führt schnelle C-Bibliothek-Beendigungsvorgänge aus, beendet den Prozess und wird mit dem bereitgestellten Statuscode beendet.

_cexit() - Führt vollständige C-Bibliothek-Beendigungsvorgänge aus und kehrt zum Aufrufer zurück, beendet den Prozess jedoch nicht.

_c_exit() - Führt schnelle C-Bibliothek-Beendigungsvorgänge aus und kehrt zum Aufrufer zurück, beendet den Prozess jedoch nicht.

    
Svisstack 07.09.2010, 10:11
quelle
7

Normativ in C99 sind exit und _Exit .

Der Unterschied zwischen den beiden ist, dass exit auch die Handler ausführt, die mit atexit registriert sind und Streams etc. schließt, während _Exit die atexit Routinen nicht aufruft und Streams möglicherweise nicht richtig schließt .

_exit stammt von POSIX und hat ähnliche Eigenschaften wie _Exit mit dem Unterschied, dass Streams korrekt geschlossen werden.

Kurz gesagt, wann immer Sie können, sollten Sie exit verwenden, dies ist der sauberste Weg zum Beenden.

    
Jens Gustedt 07.09.2010 11:33
quelle
1

Vom Menschen:

  

exit:
Alle Funktionen, die bei atexit (3) und on_exit (3) registriert sind, werden aufgerufen, in          die umgekehrte Reihenfolge ihrer Registrierung ... Alle offenen stdio (3) streams werden gespült und geschlossen. Dateien, die von tmpfile (3) erstellt wurden, werden entfernt.

     

_exit:
Die Funktion _exit () ist wie exit (3), ruft aber keine Funktionen auf          registriert bei atexit (3) oder on_exit (3). Ob es Standard ist          I / O puffert und entfernt temporäre Dateien, die mit tmpfile (3) erstellt wurden          implementierungsabhängig. Auf der anderen Seite schließt _exit () offen          Dateideskriptoren ...

    
adf88 07.09.2010 10:38
quelle
0

1.exit ():       Es ist die Arbeit wie das Schließen von Dateideskriptor, Dateistrom und so weiter zu bereinigen, 2._exit ():       Es ist nicht die Arbeit zu bereinigen, wie den Dateideskriptor, den Dateistrom usw. zu schließen

Dies sind die Hauptunterschiede zwischen exit () und _exit ().

bin ich Ihre Antwort behoben

    
quelle

Tags und Links