Was ist fd?

fd (File Descriptor)

Ein File Descriptor (fd) ist ein nicht-negativer, ganzzahliger Wert, der von dem Betriebssystem verwendet wird, um auf eine geöffnete Datei oder eine andere Eingabe-/Ausgabe-Ressource, wie z.B. eine Pipe oder einen Socket, zu verweisen. Im Wesentlichen ist ein fd ein Handle oder ein Zeiger, der dem Betriebssystem hilft, die Ressource zu identifizieren, auf die ein Prozess zugreifen möchte.

Kernkonzepte:

  • Identifikation: Jeder Prozess besitzt eine eigene Tabelle von File Descriptors. Wenn ein Prozess eine Datei öffnet, erstellt das Betriebssystem einen neuen Eintrag in dieser Tabelle und weist ihm einen fd zu. Der Prozess verwendet diesen fd, um nachfolgende Operationen auf der Datei auszuführen (Lesen, Schreiben, Schließen usw.).
  • Standard File Descriptors: Jeder Prozess erbt beim Start standardmäßig drei File Descriptors:
    • 0: Standard Input (stdin) - In der Regel mit der Tastatur verbunden. Standardeingabe
    • 1: Standard Output (stdout) - In der Regel mit dem Bildschirm verbunden. Standardausgabe
    • 2: Standard Error (stderr) - In der Regel mit dem Bildschirm verbunden. Standardfehler
  • Verwaltung: Das Betriebssystem ist für die Verwaltung der fd-Tabelle und die Zuweisung freier File Descriptors verantwortlich. Beim Schließen einer Datei wird der entsprechende fd freigegeben und kann wiederverwendet werden.
  • System Calls: Systemaufrufe wie open(), read(), write(), close(), dup(), und dup2() werden verwendet, um File Descriptors zu erstellen, zu manipulieren und zu schließen. Systemaufruf
  • Umleitung (Redirection): File Descriptors können umgeleitet werden, um die Standard-Ein- und Ausgabe zu verändern. Beispielsweise kann die Ausgabe eines Programms in eine Datei umgeleitet werden. Umleitung
  • Pipes: File Descriptors spielen eine wichtige Rolle bei der Kommunikation zwischen Prozessen mithilfe von Pipes. Pipes
  • Sockets: Sockets werden ebenfalls durch File Descriptors repräsentiert, was die Verwendung von gleichen Ein-/Ausgabe-Funktionen für Netzwerkkommunikation wie für Dateizugriffe ermöglicht. Sockets