Pipe

aus Freepedia, der freien Wissensdatenbank

Die Pipe (engl. für Rohr, Röhre) bezeichnet eine gepufferte Datenverbindung zwischen zwei Prozessen nach dem First In - First Out-Prinzip.

Inhaltsverzeichnis

Pipes in Betriebssystemen

Pipes sind in verschiedenen Betriebssystemen realisiert, die meisten bieten sowohl anonyme als auch benannte Pipes.

OS/2

Nach Anforderung einer Pipe werden von OS/2 zwei Zugriffskennungen (engl.: handles) zurückgeliefert, die zum Schreiben in die bzw. Lesen aus der Pipe benötigt werden. Auch Subprozesse erben den Zugriff auf diese handles. Mit der Beendigung des letzten Prozesses, der Zugriff auf eine aktive Pipe hat, wird diese von OS/2 beendet.

Anonyme Pipes unterliegen drei erheblichen Einschränkungen:

  • Zum einen können sie nur für die Kommunikation zwischen eng verwandten Prozessen benutzt werden.
  • Zum anderen ist die maximale Datenmenge, die eine Pipe enthalten kann, relativ klein.
  • Die Daten können in einer Pipe nur in derselben Reihenfolge gelesen werden, in der sie geschrieben wurden.

Benannte Pipes (Named Pipes) können dagegen auch zur Kommunikation zwischen Prozessen eingesetzt werden, die nicht miteinander verwandt sind und sich darüber hinaus auf unterschiedlichen Rechnern innerhalb eines Netzwerkes befinden dürfen.

Jeder Prozess, der den Namen einer benannten Pipe kennt, kann über diesen Namen die Verbindung zur Pipe und damit zu anderen Prozessen herstellen. Benannte Pipes gehören zu den leistungsfähigsten IPC-Methoden, die OS/2 zu bieten hat.

Sie sind flexibler als anonyme Pipes und eignen sich für sogenannte Client-Server-Anwendungen (es lassen sich auch RPCs realisieren).

Benannte Pipes ermöglichen die gleichzeitige Kommunikation in beide Richtungen, das heißt, Daten können im Vollduplex-Betrieb zwischen den Prozessen ausgetauscht werden.

Wenn ein Server-Prozess eine benannte Pipe erzeugt, so kann er mehrere Instanzen dieser Pipe generieren, die alle unter demselben Namen angesprochen werden: Eine named pipe kann gemultiplexed werden, so dass ein einzelner Server-Prozess mehrere Clients gleichzeitig bedienen kann.

Unix

Eine Pipe definiert einen unidirektionalen Datenstrom von einem Prozess zum anderen. Sie ist unter Unix eines der mächtigsten Werkzeuge, um die sequentielle Abarbeitung von Befehlen auf einem bestimmenten Datenbestand zu ermöglichen.

Bei einer anonymen Pipe ist die Kommunikation dabei auf zwei Prozesse gleichen Ursprungs beschränkt. Diese (Ursprungs-)Beziehung entsteht meistens durch Forks. In der Shell wird eine anonyme Pipe zum Startzeitpunkt der Programme durch Eingabe eines "|"-Zeichens erzeugt. Die Shell ist dann der gemeinsame Vater beider Prozesse und erledigt die Forks automatisch.

Beispiel:

cat /var/log/messages |grep sshd

Besitzt eine Anwendung jedoch Dateinamen-Parameter, so lässt sich die Pipe oft mit Hilfe von Minuszeichen dorthin leiten.

Beispiel:

tar cf - /home/user/ogg/mycolouringbook | ssh -luser server "cd /var/ogg && tar xvf -"

Eine Named Pipe, auch FIFO genannt, ist eine Pipe, die von zwei Prozessen zur Laufzeit über einen Dateinamen zum Lesen oder Schreiben geöffnet werden kann. Bei einer Named Pipe müssen die Prozesse keinen gemeinsamen Ursprung haben, die Prozesse müssen lediglich zum Zugriff auf die Pipe autorisiert sein und den Namen der Pipe kennen.

Beispiel:

mkfifo einefifo
cat /var/log/messages > einefifo &
grep sshd < einefifo

Weitere Bedeutung

Als Pipes werden auch die senkrechten Gesteinsschlote vulkanischen Ursprungs bezeichnet, die bis in große Tiefen reichen. Sie enthalten in Südafrika häufig Kimberlit, ein Mineral mit eingelagerten Diamanten, das bergbaumäßig abgebaut wird.

Das Symbol | wird auch allgemein als Pipe-Symbol bezeichnet. Es kann bei einigen Suchmaschinen wie Google die Anweisung OR ersetzen.

Weblinks



Views
'Persönliche Werkzeuge
Werkzeuge
Andere Sprachen
Ähnliche Links