Câu trả lời:
Một ống có tên (fifo) có thể làm những gì bạn muốn đến một điểm, nhưng với một vài cảnh báo:
Nếu bạn muốn có thể ghi vào đường ống trước khi người đọc tồn tại, nhà văn của bạn phải mở fifo dưới dạng đọc-ghi hoặc lệnh gọi open
sẽ chặn. Trong cái vỏ này có thể trông như thế này:
exec 3<>/path/to/pipe
echo "foo" >&3
cat <&3
Như bạn có thể thấy ở đó, tôi có thể viết vào đường ống trước khi người đọc ở xung quanh. Khi tôi đọc từ đường ống, các tin nhắn tôi đã viết đã ở đó.
Ghi vào đường ống cuối cùng sẽ chặn một khi đường ống đầy. Theo ống (7) trên linux:
Một đường ống có công suất hạn chế. Nếu đường ống đầy, thì ghi (2) sẽ chặn hoặc thất bại, tùy thuộc vào việc cờ O_NONBLOCK có được đặt hay không (xem bên dưới). Việc thực hiện khác nhau có giới hạn khác nhau cho công suất đường ống. Các ứng dụng không nên dựa vào một năng lực cụ thể: một ứng dụng nên được thiết kế sao cho quá trình đọc sẽ tiêu thụ dữ liệu ngay khi có sẵn, để quá trình viết không bị chặn.
Trong các phiên bản Linux trước 2.6.11, dung lượng của một đường ống giống như kích thước trang hệ thống (ví dụ: 4096 byte trên i386). Kể từ Linux 2.6.11, dung lượng đường ống là 65536 byte.
Tùy thuộc vào trường hợp sử dụng của bạn, bạn cũng có thể xem xét sử dụng hàng đợi tin nhắn. Nhân cung cấp một hàng đợi tin nhắn. Trên Linux, xem mq_overview (7) để biết tổng quan tốt. Ngoài ra, các dịch vụ như RabbitMQ cung cấp hàng đợi tin nhắn với nhiều bộ tính năng bao gồm có thể sử dụng được trên một mạng.
Ý bạn là http://en.wikipedia.org/wiki/Named_pipe ? Nó hoạt động như bạn yêu cầu.