Was ist der Unterschied zwischen IPC und Unix-Domain-Sockets und Named Pipes?IPC vs Domäne Sock vs Named Pipes
Ich habe vage Definitionen aus verschiedenen Büchern erhalten, konnte aber nicht klar werden, welche wo verwendet werden sollte.
Was ist der Unterschied zwischen IPC und Unix-Domain-Sockets und Named Pipes?IPC vs Domäne Sock vs Named Pipes
Ich habe vage Definitionen aus verschiedenen Büchern erhalten, konnte aber nicht klar werden, welche wo verwendet werden sollte.
Fast jede Art und Weise, wie zwei Prozesse miteinander kommunizieren, könnte als eine Form von IPC betrachtet werden.
Zum Beispiel:
IPC steht für Interprozesskommunikation. UNIX-Domain-Sockets und Named Pipes sind nur zwei IPC-Mechanismen, in Wikipedia beschrieben:
Wie qrdl angegeben, UNIX-Domain-Sockets und Named Pipes sind beide IPC-Mechanismen.
Von diesen beiden sind benannte Pipes einfacher zu verwenden, aber viel weniger flexibel als UNIX-Domain-Sockets. Wenn Sie beispielsweise für jeden Schreibprozess potenziell mehr als einen Lesevorgang erwarten, sind UNIX-Domänen-Sockets ein Muss. Wenn Sie erwarten, dass der Lesevorgang während der Ausführung des Schreibprozesses angehalten und gestartet wird, benötigen Sie UNIX-Sockets.
Vielen Dank für die Frage, einige aktualisierte Funktionen konzentriert:
In Domain Sockets, die eigentliche Kommunikation (Datenaustausch) nicht auf das Dateisystem verwenden, aber Puffer im Kernelspeicher. Standardmäßig ist dies der Vollduplex-Modus.
Named Pipes werden durch ihren Zugriffspunkt identifiziert, eine Datei, die im Dateisystem für die Verarbeitung der Daten aufbewahrt wird. Eine Named Pipe unterstützt standardmäßig blockierte Lese- und Schreibvorgänge. Es ist jedoch möglich, Named Pipes für nicht blockierende Operationen zu verwenden, indem Sie das O_NONBLOCK-Flag beim Öffnen angeben. Eine Named Pipe muss entweder schreibgeschützt oder schreibgeschützt geöffnet sein. Es darf nicht zum Lesen/Schreiben geöffnet werden, da es sich um einen Halbduplex-Einwegkanal handelt.
OP über Domain-Sockets gefragt. Domain-Sockets werden normalerweise über Pipes implementiert, sodass sie so schnell wie Pipes sind. Domain-Sockets sind nützlich, da sie genau die gleiche Schnittstelle wie Netzwerk-Sockets haben (nur unterschiedliche Socket-Familie). Wenn Ihre Anwendung Sockets unterstützt und Sie feststellen, dass sich beide Parteien auf demselben Computer befinden, können Sie einfach zu Domain-Sockets wechseln (X Windows macht es). Sie antworten also falsch. – qrdl
hoffe, es ist gut aktualisiert. –
Das Faden scheint mehr Aufmerksamkeit zu bekommen: http://stackoverflow.com/questions/9475442/unix-domain-socket-vs-named-pipes – schmijos