2016-03-20 9 views
0

Wenn ich eine Textdatei mit open("file.txt",O_RDONLY) öffne, muss ich sie mit close() schließen?C - Muss ich Dateien nach dem Öffnen mit Systemaufrufen schließen?

Alberne Frage, ich weiß, aber ich bin nicht ganz sicher, ob das Ende eines Prozesses geöffnete Dateien offen lässt.

+0

Nur gute Manieren zum Aufräumen nach sich selbst –

+0

Randnotiz - In Anwendungscode in C geschrieben, sollten Sie in der Regel ['fopen'] (http://man7.org/linux/man-pages/man3/fopen. 3.html) anstatt "offen" zu nennen. 'fopen' ist der Standard' C' und ist damit sehr portabel - sogar für Windows, während 'open' POSIX ist, wodurch es ein wenig weniger portabel ist. So gibt 'open' Ihnen mehr" exotische "Fähigkeiten wie' mmap', 'pread' und' readv', aber auf Kosten der Tragbarkeit. Wenn Ihr Code nur 'open',' read', 'write',' lseek' und 'close' aufruft, sollte er' fopen', 'fread',' fwrite', 'fseek' aufrufen und 'fclose'. –

+0

Ich weiß, aber um einen japanischen Comic zu zitieren Ich mag, Hi, das ist Student! Oder in menschlichen Worten, das war eine Einschränkung der Zuweisung - Systemaufrufe anstelle von Bibliotheksfunktionen zu verwenden, um I/O aus Dateien zu handhaben. – Sunspawn

Antwort

5

Die Datei bleibt geöffnet, bis Sie sie schließen oder Ihr Prozess beendet wird. Der beendete Prozess wird die Dateideskriptoren für diesen Prozess ungültig machen und so im Wesentlichen die Dateien "schließen".

Ich würde sie immer explizit und so früh wie möglich schließen.

Verwandte Themen