Remove ads
Technik zur Datenübermittlung zwischen zwei Software-Anwendungen Aus Wikipedia, der freien Enzyklopädie
Eine Pipeline in unixoiden Betriebssystemen besteht aus Programmen, die über ihre Standard-Datenströme miteinander verkettet sind. Dabei „empfängt“ ein Programm über die Standardeingabe (stdin) die Standardausgabe (stdout) des jeweils vorherigen Programms in der Kette. Die einzelnen Programme werden nacheinander durch das jeweils vorherige aufgerufen.[1]
In der Shell-Syntax wird ein Senkrechter Strich (|
, im Unix-Jargon „Pipe“ oder „Pipe-Zeichen“ genannt) als Verkettungszeichen der einzelnen Programme verwendet:
Programm1 | Programm2 | Programm3
Das Betriebssystem nutzt hierbei das Prinzip der „namenlosen Pipe“, die älteste und erste Technik der Interprozesskommunikation.[2]
ls -dl *key*
eine Liste aller Dateien im aktuellen Verzeichnis mit der Zeichenkette „key“ im Namen.grep -v "failed"
um jene Zeilen, die die Zeichenkette „failed“ enthalten.ls -dl *key* | grep -v "failed" | less
Per Default sammelt die Pipeline die Standardfehlerausgaben (stderr) ihrer einzelnen Kindprozesse und leitet sie am Ende an die Kommandozeile weiter. Die alternative Schreibweise "|&
" der C-Shell führt jedoch die Standardausgaben und die Standardfehlerausgaben der jeweiligen Kindprozesse zusammen und übergibt diese als Standardausgabe an den nächsten Prozess.[3] Ergänzend dazu leitet die Pipeline in der Bourne-Shell seit Bash 4.0 die
Standardfehlerausgaben mit der Notation 2>&1
in eine Datei um.[4]
Douglas McIlroy stellte während seiner Zeit in den Bell Labs (der Geburtsstätte von Unix) fest, dass sehr oft Benutzer die Ausgabe-Datei eines Programms als Eingabe-Datei für ein anderes nutzten.[5] Er führte daher das Konzept der Pipe ein, welches Ken Thompson im Jahr 1973 in Version 3 Unix durch den Systemaufruf pipe()
und für die Shell durch die Pipe erweiterte.[6]
Ken Thompson führte außerdem die obige Notation ein, welche die Beschreibung der Pipe-Syntax in Version 4 Unix stark vereinfachte.[7]
Viele Betriebssysteme wie DOS, OS/2, Microsoft Windows, und BeOS implementierten später die Pipeline mit identischer Notation und Tony Hoare entwickelte das Konzept der Pipeline mit CSP weiter.[8]
Das Computerprogramm Automator von Apple verkettet auch sich wiederholende Befehle mit Pipelines. Das Roboter-Icon trägt daher als Hommage an das ursprüngliche Unix-Konzept ein Rohr (Pipe) in seinen Händen.
pipe(sh)
– Open Group Base SpecificationSeamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.