Named pipes (fifo) memiliki empat tiga kelebihan yang dapat saya pikirkan:
(Diperbarui, terima kasih atas umpan balik dari Stephane Chazelas )
Jadi satu tugas segera yang jelas tidak dapat Anda capai dengan pipa tanpa nama adalah aplikasi klien / server konvensional.
Poin terakhir (terpukul) di atas tentang pipa searah relevan di Linux, POSIX (lihat popen()
) mengatakan bahwa pipa hanya perlu dibaca atau ditulisi , di Linux searah . Lihat Memahami Kernel Linux (3rd Ed. O'Reilly) untuk perincian spesifik Linux (p787). Pipa penawaran dua arah OS lainnya (tanpa nama).
Sebagai contoh, Nagios menggunakan fifo untuk file perintahnya . Berbagai proses eksternal (skrip CGI, pemeriksaan eksternal, NRPE dll) menulis perintah / pembaruan untuk fifo ini dan ini diproses oleh proses Nagios yang persisten.
Pipa yang dinamai memiliki fitur yang tidak seperti koneksi TCP, tetapi ada perbedaan penting. Karena fifo memiliki nama sistem file persisten yang dapat Anda tulis padanya meskipun tidak ada pembaca, diakui penulisan akan memblokir (tanpa I / O async atau non-blocking), meskipun Anda tidak akan kehilangan data jika penerima tidak dimulai (atau sedang dimulai ulang).
Untuk referensi, lihat juga soket domain Unix , dan jawaban untuk pertanyaan Stackoverflow ini yang merangkum metode IPC utama , dan ini yang membahas tentangpopen()