Đây là một máy chủ echo đơn giản trong Unix, sử dụng nc:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(dựa trên điều này )
Như tôi có thể thấy, luồng dữ liệu hoạt động như sau:
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
Và đây là câu hỏi: tại sao điều này không hoạt động?
nc -k -l 4458 -v >fifo <fifo
Bạn sẽ nhận thấy rằng nếu bạn cố gắng telnet
để localhost
trên 4458
bạn sẽ nhận được một kết nối "từ chối" lỗi.
cat myfifo | nc -k -l 4458 > myfifo
cũng hoạt động. Nếu bạn sử dụng tệp văn bản, file.txt như vậync -k -l 4458 < file.txt > file.txt
Kết nối đầu tiên sẽ kết nối và đóng (có nghĩa là vì đầu vào bị cắt và EOF đóng ổ cắm), kết nối thứ hai sẽ trở thành một máy chủ tiếng vang đáng quên: nó sẽ lặp lại mọi dòng khác và lưu các dòng chưa được lưu vào tệp văn bản.