Wie arbeitet std::cout?

10/12/2014 19:12 Masterakio1995#1
Hallo liebe epvpler,
mich würde interessieren wie std::cout genau arbeitet. Gibt es eine Möglichkeit sich die Funktion z.B. in der iostream anzuschauen o.ä.?
10/12/2014 19:32 snow#2
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.
10/13/2014 00:30 Tasiro#3
Quote:
Originally Posted by snow View Post
Den Code dazu kannst du übrigens vermutlich maximal in der fertig kompilierten Bibliothek anschauen. Oder evtl. bei einer Beispielimplementierung.
Bei Visual Studio gibt es einen Ordner, den man sich dazu ansehen sollte, C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\src für VS 2013. Darin ist der Quelltext der CRT enthalten. Du kannst damit die CRT selbst erstellen. Siehe dazu [Only registered and activated users can see links. Click Here To Register...].