Datei-Deskriptor 0

Zeichnung von dieser thread diskutieren Datei-Deskriptoren und Tabellen;

Ich möchte wissen, wie die Standardeingabe (Dateideskriptor 0, nicht in C stdin-DATEI-Struktur) erfolgt innerhalb der Geschosse.

Wenn ich ein Stück code wie read(0, buffer, 1024) in C, die standardmäßig in C-Datei-Deskriptor 0 ist angeschlossen, die Tastatur, die shell ermöglicht es mir, geben Sie text ein, weil wir davon ausgehen, Lesen, warten, Lesen Sie den Inhalt des character device "standard input", auch bekannt als die Tastatur. Aber würde nicht die standard-Eingabe einfach leer und produzieren, als dessen Resultat? Okay, also lasst uns sagen, dass "mit Tastatur" Weg ist die Art und Weise zu erklären; wenn das der Fall ist, dann, dass muss bedeuten, Muscheln line buffer Ihrem Kommando, richtig? Aufrufen einer Lesen Sie auf Datei-Deskriptor 0 würde bedeuten, dass file-Deskriptor 0 in einer Schale verbunden ist, um das line-buffered-Puffer Ausgabe von standard-input, und nicht direkt auf der Tastatur, so dass das, was C warten? Außerdem, warum können wir nicht verwenden lseek() auf standard ein - und hat gesagt 'Datei immer überschrieben wird jeder "schreiben", die es gibt und daher auch nichts zu suchen um als standard-Eingabe (der Tastatur) ist nicht wirklich eine Datei auf einem Speichermedium per se?

C weiß nichts von "keyboards" - es weiß einfach zu stdin, das ist ein Strom von bytes. Es verwendet blockierende I/O zum Lesen, was bedeutet, dass, wenn es keine Charaktere auf stdin zu Lesen, dann wartet einfach nur bis es gibt.
Als "leer" und "Wartezeiten" sind nicht gegenseitig exklusiv. Was zählt, ist, ob ein Datei-Deskriptor ist open.

InformationsquelleAutor rjs | 2014-06-10

Schreibe einen Kommentar