Saya mencoba memahami pipa bernama dalam konteks contoh khusus ini.
Saya mengetik <(ls -l)
terminal saya dan mendapatkan output sebagai bash: /dev/fd/63: Permission denied
,.
Jika saya mengetik cat <(ls -l)
, saya bisa melihat isi direktori. Jika saya mengganti cat
dengan echo
, saya pikir saya mendapatkan nama terminal (atau itu?).
echo <(ls -l)
memberikan output sebagai /dev/fd/63
.
Juga, contoh output ini tidak jelas bagi saya.
ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Namun, jika saya memberi, ls -l <()
itu mencantumkan saya isi direktori.
Apa yang terjadi dalam kasus pipa bernama?
mkfifo
hanya membuat pipa bernama, tanpa konten apa pun. Jadi, Anda perlu menulis sendiri (mismkfifo mypipe; ls > mypipe
.). Dan ya, tulisan ke pipa akan diblok sampai beberapa proses membaca dari pipa.