Named Pipes (FIFO) haben vier drei Vorteile, die ich mir vorstellen kann:
(Aktualisiert, dank des Feedbacks von Stephane Chazelas )
Eine sofort offensichtliche Aufgabe, die Sie mit einer unbenannten Pipe nicht lösen können, ist eine herkömmliche Client / Server-Anwendung.
Die letzte (geschlagen) Punkt oberhalb von etwa unidirektionalen Leitungen ist relevant für Linux, POSIX (siehe popen()
) sagt , dass ein Rohr nur sein muss lesbar oder beschreibbar , auf Linux sie unidirektional sind . Weitere Informationen zu Linux finden Sie unter Grundlegendes zum Linux- Kernel (3rd Ed. O'Reilly) (S. 787). Andere Betriebssysteme bieten bidirektionale (unbenannte) Pipes an.
Nagios verwendet beispielsweise ein FIFO für seine Befehlsdatei . Verschiedene externe Prozesse (CGI-Skripte, externe Prüfungen, NRPE usw.) schreiben Befehle / Aktualisierungen in dieses FIFO und diese werden vom persistenten Nagios-Prozess verarbeitet.
Named Pipes verfügen über ähnliche Funktionen wie TCP-Verbindungen, es gibt jedoch wichtige Unterschiede. Da ein FIFO über einen dauerhaften Dateisystemnamen verfügt, können Sie darauf schreiben, auch wenn kein Lesegerät vorhanden ist. Zugegeben, die Schreibvorgänge werden blockiert (ohne asynchrone oder nicht blockierende E / A), obwohl Sie keine Daten verlieren, wenn der Empfänger dies nicht tut gestartet (oder wird neu gestartet).
Als Referenz siehe auch Steckdosen Unix - Domain , und die Antwort auf diese Frage Stackoverflow , der die wichtigsten fasst IPC - Methoden, und diese eine , die darüber spricht ,popen()