Everything is a file

Everything is a file (englisch für Alles ist eine Datei) beschreibt eine der definierenden Eigenschaften von Unix und seinen Abkömmlingen, demnach Ein-/Ausgabe-Ressourcen wie Dateien, Verzeichnisse, Geräte (z. B. Festplatten, Tastaturen, Drucker) und sogar Interprozess- und Netzwerk-Verbindungen als einfache Byteströme via Dateisystem verfügbar sind.[1]

Der Vorteil dieses Ansatzes ist, dass dieselben Werkzeuge und Programmierschnittstellen für den Zugriff auf all diese Ressourcen genutzt werden können. Wenn eine Datei geöffnet wird, erhält das Programm vom Kernel einen Dateideskriptor. Für alle nachfolgenden Operationen dient dieser als Ein-/Ausgabe-Schnittstelle. Da auch für anonyme Pipes und Netzwerk-Sockets Dateideskriptoren angelegt werden, die jedoch keinen Pfad haben, wird das Prinzip des Öfteren auch Everything is a file descriptor (‚Alles ist ein Dateideskriptor‘) oder, nach Linus Torvalds, Everything is a stream of bytes (‚Alles ist ein Bytestrom‘)[2] genannt.

Zusätzlich existiert eine Reihe von virtuellen Dateisystemen und Pseudodateisystemen, die Informationen über den Systemzustand und Prozesse hierarchisch strukturiert verfügbar machen.

Der Begriff wird durchweg als Schlagwort für die Andersartigkeit von unixoiden Systemen im Umgang mit Dateien verwendet. Er ist jedoch nicht scharf abgegrenzt und zielt, wie oben angedeutet, je nach Verwendung auf verschiedene Aspekte ab. Während die oben genannten Eigenschaften auch heutzutage nur bei unixartigen Betriebssystemen vorzufinden sind und weithin mit everything is a file verbunden werden, sind von Unix auch Neuerungen ausgegangen, die mittlerweile allgegenwärtig sind. Die folgenden Abschnitte behandeln die Aspekte im Einzelnen.

  1. Machtelt Garrels: Introduction to Linux. A Beginner’s Guide. 2. Auflage. Fultus, 2007, ISBN 1-59682-112-4, Abschnitt 3.1.1.1.
  2. Linus Torvalds: signalfd v2 – signalfd core. Abgerufen am 17. Januar 2013. Vorlage:Cite web: Der Parameter language wurde bei wahrscheinlich fremdsprachiger Quelle nicht angegeben.

Developed by StudentB