2017-08-18 1 views
3

Was passiert, wenn ich eine Datei nach dem Schreiben nicht schließe?Was passiert mit dem Öffnen von Dateien, die nicht ordnungsgemäß geschlossen sind?

Nehmen wir an, wir haben einen too many open files Fehler und dadurch stürzt das Programm ab.

Geht das OS das für mich? Und wenn dies die nicht geschlossenen Dateien beschädigt, wie stelle ich fest, dass sie beschädigt sind?

+0

Die Datei wird gesperrt, und Sie können sie nicht bearbeiten oder ändern. Dies würde bedeuten, dass Sie sie auch nicht löschen können. Und wenn Sie diese on the fly erstellen, könnte wahrscheinlich in einen ... rennen Sie vermuten, es stapeln Überlauf. Oder ein großes Speicherleck und schließlich Absturz Ihrer App, PC und/oder Server. –

+0

Ihr Computer könnte damit umgehen, wenn Sie den Prozess finden und den Prozess beenden könnten, der ihn steuert. –

+0

Mögliche Duplikate? https://stackoverflow.com/questions/8175827/what-happens-if-i-dont-call-fclose-in-ac-program –

Antwort

2

Im Allgemeinen, wenn Sie in eine Datei schreiben, dann stürzt Ihre Anwendung ab, das Betriebssystem wird die Puffer auf den Datenträger leeren und für Sie aufräumen. Das gleiche passiert, wenn Ihr Programm beendet wird, ohne die Dateien explizit zu schließen. Dies beschädigt Dateien nicht.

Die schlechte Situation ist, wenn Sie in eine Datei schreiben und jemand den Stecker auf dem Computer zieht.

3

Von exit()

_exit() führt nahe Deskriptoren für offene Dateien, und dies kann eine unbekannte Verzögerung verursachen, zum Warten anstehenden Ausgabe zu beenden.

Jedes return verbirgt einen Systemaufruf zu verlassen, so dass jeder unclosed Deskriptor wird durch das Betriebssystem geschlossen.

Verwandte Themen