Wenn du mit std::fstream auf eine Datei zugreifst, erhältst du nicht etwa einen direkten Zeiger o.ä. auf die Datei, sondern einen File Descriptor, den das Betriebssystem der Datei zuordnen kann.
Bei std::cout ist es ähnlich, hier wird in stdout geschrieben, das den File Descriptor 1 besitzt (stdin ist 0, stderr ist 2), und das Betriebssytem kümmert sich (wie bei allen FDs) um die Aus- bzw. Eingabe aus dem File Descriptor.
Sockets etc. arbeiten übrigens auch mit File Descriptors.
Das ist ziemlich viel Betriebssystem- und Kernelgedöns, wer sich dafür interessiert, kann z.B. etwas von Tanenbaum lesen.
Den Code dazu kannst du übrigens vermutlich maximal in der fertig kompilierten Bibliothek anschauen. Oder evtl. bei einer Beispielimplementierung.
|