Verrohrung und Umleitung
Was ist der genaue Unterschied zwischen Verrohrung und Umleitung ?
Wo sollten wir verwenden, Rohrleitungen und wo sollten wir die Umleitung verwenden ?
Wie Sie intern funktionieren ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umleitung ist (meist) für Dateien (leiten Sie Datenströme/Dateien).
Rohrleitungen ist für Prozesse: Sie pipe (Weiterleitung) - streams von einem Prozess zum anderen.
Im wesentlichen, was Sie wirklich tun, ist "verbinden", um eine standard-stream (in der Regel
stdout
) von einem Prozess zum standard-stream von einem anderen Prozess (in der Regelstdin
) über Leitung.Rohre haben auch die Synchronisation "Nebeneffekt" : Sie verhindern, dass ein Prozess (auf Lesen), wenn die andere hat nichts zu schreiben (noch) nicht oder beim Lesen der Prozess kann nicht Lesen schnell genug (wenn der pipe-buffer voll ist).
Rohrleitung leitet die Ausgabe eines Programms in ein anderes Programm.
Beispiel:
Rohre die Namen aller Dateien im aktuellen Verzeichnis zu grep.
Wieder Richtung lenkt oder fügt die Ausgabe an eine Datei.
Rohrleitungen erspart Ihnen die Mühe zu schreiben in eine Datei Lesen aus einer Datei ausführen ein Programm auf die Ausgabe eines anderen Programms.
entspricht
So, wie Sie intern arbeiten, ich bin nur zu lernen, dass mein ichs jetzt.
Aber ich habe diesen link gefunden, die bietet einige Diskussion auf.
Wie Funktioniert Rohrleitungen in Linux Funktioniert?
Sollten Sie verwenden, Rohrleitungen, wenn Sie wollen, pass-Ausgänge zwischen Programmen; Umleitung verwenden, wenn Sie möchten, um eine Datei zu schreiben.
Grundsätzlich Umleitung und Verrohrung sind ein paar Möglichkeiten unter vielen, um zu erreichen, Inter-Prozess-Kommunikation in Unix.
ls > FileName
ls | grep $myName
Es funktioniert auf einfache Daten-sharing, wie Erzeuger und Verbraucher.
Eigentum Vergleich: Rohrleitungen ist immer uni-direktional, während der Umleitung könnte verwendet werden, um die Umleitung der Eingabe als auch als Ausgabe.
ls > grep myFileName
[ Umleiten der Ausgabe des ersten Befehls, um später ]sort < fileName.txt
[ Umleiten fileName.txt Datei als Eingabe für den Befehl Sortieren ]Kann man auch schreiben unter Verwendung von bi-direktionale Umleitung in eine einzige Anweisung.
sort < fileName.txt > sortNewFile.txt
Während
Piping
es ist immer die Ausgabe des ersten Befehls angegeben, um die später eine und dass zu simulanoeously.ls | grep myName | awk '{ print $NF }'
[ mehrere Leitungen in einer einzigen Anweisung ]Hinweis 1:
command > fileName
. Wenn es einen Befehl namensfileName
würde mit Umleitung viel schwieriger und fehleranfällig. Man muss erst prüfen, ob es einen Befehl mit dem Namen der Ziel-Datei.Andere Möglichkeiten zum erreichen der IPC in Unix-Systems sind:
Umleitung: senden Sie die Ausgabe (
stdout
- und/oderstderr
) eines Befehls in eine DateiBeispiel :
ls > your_file
schreiben Sie das Ergebnis der Verzeichnis-Eintrag eine Datei namensyour_file
Rohrleitungen: senden Sie die Ausgabe an einen anderen Befehl. Beispiel
ls | wc
senden der gleichen Ausgabe (directory-listing) der Befehlwc
die count Zeichen.Habe ich bemerkt, dass pipelining gilt für die Ausgabe von Prozess-substitution, aber nicht die Umleitung: