Was genau ist der Unterschied zwischen Pipes und Streams?

Was genau ist der Unterschied zwischen Pipes und Streams?

Ich habe über Pipes und Streams gelesen und bin immer noch verwirrt, wie sie implementiert werden.

Ein Programm wird gestartet und liest Daten aus dem „Standardeingabe“-Stream (stdin), wohin die Tastatur Daten sendet.

Meine Frage ist, worin liegt der Unterschied zu einer Pipe? Piping ermöglicht es mir, einen Prozess zu haben, der Daten an eine Pipe sendet, und einen anderen Prozess, der Daten daraus liest.

Wenn die Tastatur gedrückt wird, werden Daten an stdin gesendet und ein Programm liest Daten aus diesem gleichen Stream.

Sobald Daten an diesen Stream gesendet werden, wird, genau wie bei einer Pipe, ein „Lese“-Vorgang ausgeführt.

Werden diese Streams geleitet?

Antwort1

Unix-Terminal-E/A wurde traditionell als eine ArtWarteschlange. Ältere Kernel verwendeten clists. V8 Unix verwendeteStreams. In den meisten Fällen werden Clists und Streams verwendet, um einen Teil der Verbindung zwischen einem Benutzerprozess (insbesondere einem Dateideskriptor) und einem Zeichengerätetreiber (beispielsweise einem seriellen Port oder einem PTY) zu implementieren.

Pipes sind ebenfalls eine Warteschlange, aber sie verknüpfen Benutzerprozesse (genauer gesagt ein Paar Dateideskriptoren). Es gibt verschiedene Implementierungen von Pipes, darunter Sockets, einen speziellen Dateityp und sogar STREAMS (STREAMS ist eine Ableitung von V8-Streams).

Streams und Pipes sind also beides Implementierungen einer Warteschlange, sie werden aber in unterschiedlichen Situationen verwendet.

Antwort2

Dies ist aus technischer Sicht möglicherweise nicht ganz richtig, kann aber Ihre Verwirrung lindern. Ich neige dazu, einen Stream als etwas zu betrachten, das dem Programm innewohnt, wie STDIN, STDOUT und STDERR, während eine Pipe außerhalb des Programms liegt. Beispielsweise sendet cat foo.txt | grep barder catBefehl im Befehl an seinen intrinsischen STDOUT, die externe Pipe verbindet dies dann mit grepdem intrinsischen STDIN von .

verwandte Informationen