Nazwane potoki (fifo) mają cztery trzy zalety, o których mogę myśleć:
(Zaktualizowano, dzięki opinii Stephane Chazelas )
Tak więc jednym natychmiast oczywistym zadaniem, którego nie można wykonać za pomocą nienazwanego potoku, jest konwencjonalna aplikacja klient / serwer.
Ostatni (dotknięty) punkt powyżej dotyczący potoków jednokierunkowych jest istotny w systemie Linux, POSIX (patrz popen()
) mówi, że potok musi być tylko do odczytu lub zapisu , w Linuksie są one jednokierunkowe . Zobacz Understanding The Linux Kernel (3rd Ed. O'Reilly), aby uzyskać szczegółowe informacje na temat systemu Linux (p787). Inne systemy operacyjne oferują potoki dwukierunkowe (nienazwane).
Na przykład Nagios używa pliku fifo do pliku poleceń . Różne procesy zewnętrzne (skrypty CGI, kontrole zewnętrzne, NRPE itp.) Piszą polecenia / aktualizacje do tego fifo i są one przetwarzane przez trwały proces Nagios.
Nazwane potoki mają funkcje podobne do połączeń TCP, ale istnieją ważne różnice. Ponieważ fifo ma trwałą nazwę systemu plików, którą możesz zapisać do niej, nawet gdy nie ma czytnika, co prawda zapisy będą blokować (bez asynchronicznych lub nieblokujących operacji we / wy), chociaż nie stracisz danych, jeśli odbiornik nie jest rozpoczęty (lub jest ponownie uruchamiany).
W celach informacyjnych zobacz także gniazda domenowe systemu Unix i odpowiedź na to pytanie Stackoverflow, które podsumowuje główne metody IPC , oraz to, które mówi opopen()