Mục tiêu của tôi là tạo ra một máy chủ echo đơn giản bằng cách sử dụng nc
và một fifo
. Tôi không tìm kiếm cách tốt nhất để làm điều đó, tôi chỉ đang cố gắng hiểu ngữ nghĩa của các lệnh sau (khi nào xảy ra ngã ba, tại sao, nó thay đổi gì, tại sao các lệnh lại hoạt động khác nhau ...).
Tôi đang sử dụng Bash, vì vậy tôi không chắc chắn nếu tất cả các lệnh sẽ làm việc với một POSIX sh
hay zsh
, ksh
...
Dưới đây là bốn lệnh tôi đang đề cập trong tiêu đề (giả sử rằng tôi đã làm 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
Bây giờ tôi sẽ mong đợi 4 lệnh sẽ làm điều tương tự, ít nhất là hai lệnh cuối cùng làm điều tương tự.
- Lệnh đầu tiên hoạt động như mong đợi, một máy chủ echo đơn giản sẽ tắt khi máy khách đóng kết nối.
- Hành vi như 1.
- Tôi có thể kết nối với máy chủ, gửi dữ liệu, nhưng tôi không bao giờ nhận lại được gì. Khi tôi đóng kết nối máy khách, máy chủ sẽ tắt.
- Không thể kết nối với máy chủ, máy chủ lắng nghe mãi mãi.