Welche drei Dateien werden immer von einem Prozess geöffnet?

8

Jemand erwähnte, dass es drei verschiedene Dateien gibt, die ein Prozess immer öffnet. Was bedeutet das? Welche Dateien sind das?

unix_newbie
quelle

Antworten:

11

Die geöffneten Dateien sind keine Dateien auf der Festplatte. Dies sind die Streams (Pseudodateien), stdin (0), stdout (1) und stderr (2). Hier ist der relevante Auszug aus dem POSIX-Standard :

Eine Datei mit zugehöriger Pufferung wird als Stream bezeichnet und als Zeiger auf einen definierten Typ FILE deklariert. Die Funktion fopen () erstellt bestimmte beschreibende Daten für einen Stream und gibt einen Zeiger zurück, um den Stream bei allen weiteren Transaktionen zu bestimmen. Normalerweise gibt es drei offene Streams mit konstanten Zeigern, die im Header deklariert und den geöffneten Standarddateien zugeordnet sind.

Beim Programmstart müssen drei Streams vordefiniert sein und müssen nicht explizit geöffnet werden: Standardeingabe (zum Lesen herkömmlicher Eingaben), Standardeingabe (zum Schreiben herkömmlicher Ausgaben) und Standardfehler (zum Schreiben diagnostischer Ausgaben). Beim Öffnen wird der Standardfehlerstrom nicht vollständig gepuffert. Die Standardeingabe- und Standardausgabestreams werden genau dann vollständig gepuffert, wenn festgestellt werden kann, dass sich der Stream nicht auf ein interaktives Gerät bezieht.

Jordanm
quelle