Dựa trên câu trả lời của Mark A. , tôi đã phải thực hiện một tinh chỉnh nhỏ để làm cho nó hoạt động cho máy Mac của tôi (ít nhất là trên macOS Mojave Phiên bản 10.14.4)
mkfifo a
mkfifo b
nc 127.0.0.1 8000 < b > a &
nc -l 8001 < a > b &
printf "" > a
Đó là tuyên bố printf có vẻ rất quan trọng. Nếu không, lệnh netcat để kết nối với cổng 8000 sẽ không bao giờ thực sự cố gắng kết nối và lệnh netcat để nghe trên cổng 8001 sẽ không bao giờ thực sự nghe trên cổng 8001. Nếu không có printf, mỗi khi tôi cố gắng kết nối với cổng 8001 tôi sẽ nhận được kết nối từ chối.
Giả định của tôi là netcat bằng cách nào đó phải chặn stdin (có thể nó đang cố đọc nó vì lý do nào đó) trước khi thực sự thực hiện bất kỳ hoạt động nào của Socket. Như vậy, nếu không có câu lệnh printf ghi đến fifo a, lệnh netcat sẽ không bao giờ bắt đầu nghe trên cổng 8001.
Lưu ý: Tôi đã để lại câu trả lời trên bài đăng của Mark, nhưng tôi chưa có danh tiếng.