この特定の例のコンテキストで名前付きパイプを理解しようとしています。
私が入力し<(ls -l)
、私の端末にとのような出力を得ますbash: /dev/fd/63: Permission denied
。
と入力するcat <(ls -l)
と、ディレクトリの内容が表示されます。私が交換した場合cat
にecho
、私は端末名を取得すると思います(またはそれを何ですか?)。
echo <(ls -l)
出力をとして与えます/dev/fd/63
。
また、この出力例は私には不明確です。
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
ただし、指定するとls -l <()
、ディレクトリの内容が一覧表示されます。
名前付きパイプの場合はどうなりますか?
mkfifo
コンテンツなしで名前付きパイプのみを作成します。そのため、自分でそれに書き込む必要があります(例mkfifo mypipe; ls > mypipe
)。はい、パイプへの書き込みは、プロセスがパイプから読み取るまでブロックされます。