Ini adalah server gema sederhana di Unix, menggunakan nc:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(berdasarkan ini )
Seperti yang saya lihat, aliran data berfungsi sebagai berikut:
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
Dan inilah pertanyaannya: mengapa ini tidak berhasil?
nc -k -l 4458 -v >fifo <fifo
Anda akan melihat bahwa jika Anda mencoba untuk telnet
ke localhost
atas 4458
Anda akan mendapatkan "Koneksi ditolak" kesalahan.
cat myfifo | nc -k -l 4458 > myfifo
juga berfungsi. Jika Anda menggunakan file teks, file.txt seperti itunc -k -l 4458 < file.txt > file.txt
Koneksi pertama akan menghubungkan dan menutup (masuk akal karena input terpotong dan EOF menutup soket), koneksi kedua akan menjadi server gema pelupa: itu akan menggema setiap baris lain dan simpan baris yang belum dikunci ke file teks.Jawaban:
Ini karena perintah netcat bahkan belum dimulai! Shell ketika mencoba membuka fifo untuk input akan diblokir. Mencoba
dan Anda tidak akan melihat apa pun. Sebagai gantinya gunakan, misalnya,
yang membuka fifo untuk membaca dan menulis sebagai stdin, dan kemudian menyalinnya ke stdout.
Menelusuri perintah bash penuh menunjukkan bahwa tidak terbuka untuk membaca atau menulis kembali (sampai terbuka berlawanan dilakukan):
sumber