Ich versuche, Named Pipes im Kontext dieses speziellen Beispiels zu verstehen.
Ich tippe <(ls -l)
in meinem Terminal und erhalten die Ausgabe als, bash: /dev/fd/63: Permission denied
.
Wenn ich tippe cat <(ls -l)
, könnte ich den Verzeichnisinhalt sehen. Wenn ich die ersetzen cat
mit echo
, ich glaube , ich die Terminalnamen bekommen (oder ist es?).
echo <(ls -l)
gibt die Ausgabe als /dev/fd/63
.
Auch diese Beispielausgabe ist mir unklar.
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Wenn ich jedoch gebe, ls -l <()
listet es mir den Verzeichnisinhalt auf.
Was passiert bei der Named Pipe?
mkfifo
Erstellt nur die Named Pipe ohne Inhalt. Sie müssen also selbst schreiben (zmkfifo mypipe; ls > mypipe
. B. ). Und ja, die Schreibvorgänge in die Pipe werden blockiert, bis ein Prozess aus der Pipe liest.