Các ống được đặt tên (fifo) có bốn ba lợi thế tôi có thể nghĩ đến:
(Được cập nhật, nhờ phản hồi từ Stephane Chazelas )
Vì vậy, một nhiệm vụ rõ ràng ngay lập tức bạn không thể đạt được với một ống không tên là một ứng dụng máy khách / máy chủ thông thường.
Điểm cuối cùng (bị ảnh hưởng) ở trên về các đường ống một chiều có liên quan trên Linux, POSIX (xem popen()
) nói rằng một đường ống chỉ cần có thể đọc hoặc ghi được , trên Linux chúng là một hướng . Xem Hiểu Hạt nhân Linux (Ed 3 O'Reilly) để biết chi tiết cụ thể về Linux (tr787). Các hệ thống khác cung cấp các ống dẫn hai chiều (chưa được đặt tên).
Ví dụ, Nagios sử dụng fifo cho tệp lệnh của nó . Các quy trình bên ngoài khác nhau (tập lệnh CGI, kiểm tra bên ngoài, NRPE, v.v.) viết các lệnh / cập nhật cho fifo này và các quy trình này được xử lý bởi quy trình Nagios liên tục.
Các ống được đặt tên có các tính năng không giống như các kết nối TCP, nhưng có những khác biệt quan trọng. Bởi vì fifo có tên hệ thống tập tin liên tục, bạn có thể ghi vào nó ngay cả khi không có người đọc, phải thừa nhận rằng ghi sẽ chặn (không có I / O không đồng bộ hoặc không chặn), mặc dù bạn sẽ không mất dữ liệu nếu người nhận không đã bắt đầu (hoặc đang được khởi động lại).
Để tham khảo, xem thêm các ổ cắm tên miền Unix và câu trả lời cho câu hỏi Stackoverflow này tóm tắt các phương thức IPC chính và câu hỏi này nói vềpopen()