Untuk membaca dari file deskriptor 6 saya dapat menggunakan <&6atau </dev/fd/6(alias /proc/self/fd/6). Biasanya keduanya bekerja sama baiknya. Namun jika deskriptor file tersebut kebetulan berupa soket, hal-hal aneh terjadi. Sebagai contoh:
$ bash -c 'ls -l /dev/fd/6;cat /dev/fd/6' 6</dev/tcp/localhost/12345
lrwx------ 1 michas michas 64 Jan 10 19:50 /dev/fd/6 -> socket:[315010]
cat: /dev/fd/6: No such device or address
Di sini lsmenunjukkan deskriptor memang ada. Tetapi mengakses data tidak dimungkinkan dengan cara ini. Jika saya gunakan cat <&6sebagai gantinya semuanya bekerja dengan baik lagi.
Apa perbedaan antara kedua cara mengakses deskriptor file?
Apakah ada cara yang baik untuk mengakses deskriptor jika nomornya jika diberikan dalam variabel? ( </dev/fd/$fdakan bekerja, tetapi <&$fdtidak.)
(Situasi di atas dapat diamati di linux, tetapi tidak di OpenBSD. - Sepertinya deskriptor file adalah perangkat karakter biasa di sana.)