Frage

Was ist der Unterschied zwischen IPC- und UNIX -Domain -Sockets und benannten Pipes?

Ich habe vage Definitionen aus verschiedenen Büchern erhalten, konnte aber nicht klar sein, welche dort verwendet werden sollte.

War es hilfreich?

Lösung

Nahezu beliebige Art und Weise, wie zwei Prozesse miteinander kommunizieren, können als Form von IPC betrachtet werden.

Zum Beispiel:

  1. Ungenannte Rohre (CAT -Datei.txt | Grep foo) oder Benannte Pfeifen
  2. UNIX -Domain -Sockets
  3. TCP- oder UDP -Sockeln
  4. NetLink -Sockets unter Linux
  5. Verschiedene gemeinsam genutzte Speichermechanismen wie Speicherzuordnungsdateien
  6. Hochgeschwindigkeitsnachricht, wie z. B. Nulomq

Andere Tipps

Wie QRDL feststellte, sind Unix-Domain-Sockel und benannte Rohre beide IPC-Mechanismen.

Von diesen beiden benannten Pipes sind einfacher zu arbeiten, aber viel weniger flexibel als Unix-Domain-Sockets. Wenn Sie beispielsweise für jeden Schreibprozess möglicherweise mehr als einen Leseprozess erwarten, sind Unix-Domain-Sockets ein Muss. Wenn Sie erwarten, dass der Lesevorgang während der Ausführung des Schreibprozesses anhält und beginnt, benötigen Sie Unix-Domain-Sockets.

IPC steht für Inter-Process-Kommunikation. UNIX -Domain -Sockets und benannte Pipes sind nur zwei IPC -Mechanismen, die in Wikipedia beschrieben wurden:

Vielen Dank, dass Sie sich auf die Frage konzentrieren, nur wenige aktualisierte Funktionen:

In Domain -Sockets verwendet die tatsächliche Kommunikation (der Datenaustausch) das Dateisystem nicht, sondern puffert im Kernelspeicher. Standardmäßig handelt es sich um den Vollduplex-Modus.

Mit benannte Pipes werden durch ihren Zugriffspunkt identifiziert, eine Datei, die auf dem Dateisystem zur Behandlung der Daten aufbewahrt wird. Standardmäßig unterstützt ein benanntes Rohr blockierte Lese- und Schreibvorgänge. Es ist jedoch möglich, benannte Pipes nicht blockierende Operationen zu unterstützen, indem das O_Nonblock-Flag angibt, während sie sie öffnen. Eine benannte Pfeife muss entweder schreibgeschützt oder nur schriftlich geöffnet werden. Es darf nicht für Leseschreiber geöffnet werden, da es Halbduplex ist, ein Einweg-Kanal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top