2009-09-12 12 views
7

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.

+0

Das Faden scheint mehr Aufmerksamkeit zu bekommen: http://stackoverflow.com/questions/9475442/unix-domain-socket-vs-named-pipes – schmijos

Antwort

6

Fast jede Art und Weise, wie zwei Prozesse miteinander kommunizieren, könnte als eine Form von IPC betrachtet werden.

Zum Beispiel:

  1. unbenannte Pipes (cat file.txt | grep foo) oder Named Pipes
  2. Unix Domain Sockets
  3. TCP oder UDP-Sockets
  4. Netlink Sockets on Linux
  5. Verschiedene Shared Memory Mechanisms wie zum Beispiel Memory Mapped Files
  6. Schnelle Nachrichtenübermittlung wie ZeroMQ
4

IPC steht für Interprozesskommunikation. UNIX-Domain-Sockets und Named Pipes sind nur zwei IPC-Mechanismen, in Wikipedia beschrieben:

6

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.

0

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.

+2

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

+0

hoffe, es ist gut aktualisiert. –