Tujuan saya adalah membuat server gema sederhana menggunakan nc
dan tunggal fifo
. Saya tidak mencari cara terbaik untuk melakukannya, saya hanya mencoba memahami semantik dari perintah berikut (ketika garpu terjadi, mengapa, apa yang berubah, mengapa perintah berperilaku berbeda ...).
Saya menggunakan Bash, jadi saya tidak yakin jika semua perintah akan bekerja dengan POSIX sh
atau zsh
, ksh
...
Berikut adalah empat perintah yang saya sebutkan dalam judul (dengan asumsi saya sudah melakukannya mkfifo fifo
):
cat fifo | nc -l localhost 8888 > fifo
exec 3<> fifo && nc -l localhost 8888 <&3 >&3 && exec 3>&-
nc -l localhost 8888 <(cat fifo) > fifo
nc -l localhost 8888 < fifo > fifo
Sekarang saya mengharapkan 4 perintah untuk melakukan hal yang sama, paling tidak dua perintah terakhir melakukan hal yang sama.
- Perintah pertama berperilaku seperti yang diharapkan, server gema sederhana yang dimatikan ketika klien menutup koneksi.
- Berperilaku seperti 1.
- Saya dapat terhubung ke server, mengirim data, tetapi saya tidak pernah menerima apa pun kembali. Ketika saya menutup koneksi klien, server dimatikan.
- Tidak dapat terhubung ke server, server mendengarkan selamanya.
nc ... <>fifo
harus cukup. gnu.org/software/bash/manual/html_node/Redirections.htmlnc ... <>fifo >&0
, karena<>fifo
terbukafifo
untuk membaca dan menulis pada fd 0, dan kami ingin hasilnya juga ada.