12 Unterschied zwischen PIPE- und FIFO-Interprozesskommunikation

Contents

Was ist PIPE?

Eine Pipe ist ein Mechanismus für die Kommunikation zwischen Prozessen; Daten, die von einem Prozess in die Pipe geschrieben werden, können von einem anderen Prozess gelesen werden. Die Daten werden in einer First-In-First-Out-Reihenfolge (FIFO) behandelt. Die Pipe hat keinen Namen; es wird für eine Verwendung erstellt und beide Enden müssen von dem einzigen Prozess geerbt werden, der das Rohr erstellt hat.

Wenn wir in PIPES fork() verwenden, wird ein Prozess wie ein Duplikat von main erstellt. Das heißt, wenn wir fork verwenden, werden zwei Prozesse generiert, einer wird als Elternprozess und einer als Kindprozess bezeichnet. Fork gibt -1 zurück, wenn das Forken fehlgeschlagen ist, und wenn es 0 zurückgibt, bedeutet dies seinen untergeordneten Prozess, und wenn fork einen positiven Wert zurückgibt, bedeutet dies, dass es sich um einen übergeordneten Prozess handelt.

Wenn der Kindprozess vor dem Elternprozess beendet wird, wird er als Zombie-Prozess bezeichnet, während wenn der Elternprozess vor dem Kindprozess beendet wird, wird er als verwaister Prozess bezeichnet. In diesem Fall wird das Kind vom Init-Prozess verwaltet, die Pipe-Funktion wird in der Header-Datei #include deklariert.

Was Sie über PIPE wissen müssen

  • Sie sind unbenannte IPC-Objekte.
  • FIFO ist in der Lage, über verschiedene Computer und Netzwerke hinweg zu kommunizieren.
  • PIPE existiert nicht im Dateisystem.
  • In PIPE findet die Datenübertragung zwischen Kindprozess und Elternprozess statt.
  • PIPE wird durch die Funktion pipe() erstellt.
  • In PIPE erfolgt die Lese- und Schreiboperation gleichzeitig.
  • PIPE verschwindet, sobald es geschlossen wird oder einer der Prozesse (übergeordnet oder untergeordnet) die Ausführung beendet.
  • PIPE hat keine Kontrolle über Eigentum und Berechtigungen.
  • PIPE ist unidirektional.
  • PIPE bietet Simplex-Datenfluss.
  • In PIPE gehört die Kommunikation zu den Prozessen mit einem gemeinsamen Vorfahren (verwandter Prozess).

FIFO

Ein FIFO ist eine spezielle Art von Datei auf dem lokalen Speicher, die es zwei oder mehr Prozessen ermöglicht, durch Lesen oder Schreiben in oder aus der Datei miteinander zu kommunizieren. Es ähnelt einer Pipe, aber anstelle einer anonymen, temporären Verbindung hat ein FIFO einen Namen oder Namen wie jede andere Datei. Prozesse öffnen den FIFO namentlich, um über ihn zu kommunizieren.

Eine FIFO-Spezialdatei wird in das Dateisystem durch den Aufruf von mkfifo() in C eingetragen. Nachdem wir auf diese Weise eine FIFO-Spezialdatei erstellt haben, kann jeder Prozess sie wie eine normale Datei zum Lesen oder Schreiben öffnen. Es muss jedoch an beiden Enden gleichzeitig geöffnet sein, bevor Sie mit der Eingabe- oder Ausgabeoperation fortfahren können.

Was Sie über FIFO wissen müssen

  • Sie werden als IPC-Objekt bezeichnet.
  • PIPE ist lokal für das System und kann nicht für die Kommunikation über das Netzwerk verwendet werden.
  • FIFO existiert im Dateisystem.
  • FIFO haben mehrere Prozesse, die darüber kommunizieren, wie mehrere Client-Server-Anwendungen.
  • FIFO wird von der Funktion mkfifo() erstellt.
  • Beim FIFO ist es nicht erforderlich, dass sowohl Lese- als auch Schreiboperation gleichzeitig erfolgen.
  • FIFO existiert auch beim Aufrufen von Prozessexit. Sie bleiben bis zum Neustart des Systems erhalten.
  • Da es sich bei FIFO um eine Datei handelt, können Sie den Besitz und die Berechtigungen steuern.
  • FIFO ist bidirektional. Das gleiche FIFO kann zum Lesen und Schreiben verwendet werden.
  • FIFO bietet einen Halbduplex-Datenfluss.
  • In FIFO ist es nicht erforderlich, dass der Prozess einen gemeinsamen Vorfahren für die Kommunikation hat (nicht verwandter Prozess).

Lesen Sie auch: Unterschied zwischen Calloc () und Malloc ()

Unterschied zwischen PIPE- und FIFO-Interprozesskommunikation

VERGLEICHSGRUNDLAGEROHRFIFO
BeschreibungSie sind unbenannte IPC-Objekte.  Sie werden als IPC-Objekt bezeichnet.  
KommunikationFIFO ist in der Lage, über verschiedene Computer und Netzwerke hinweg zu kommunizieren.  PIPE ist lokal für das System und kann nicht für die Kommunikation über das Netzwerk verwendet werden.  
ExistenzPIPE existiert nicht im Dateisystem.  FIFO existiert im Dateisystem.  
ProzesseIn PIPE findet die Datenübertragung zwischen Kindprozess und Elternprozess statt.  FIFO haben mehrere Prozesse, die darüber kommunizieren, wie mehrere Client-Server-Anwendungen.  
SchaffungPIPE wird durch die Funktion pipe() erstellt.  FIFO wird von der Funktion mkfifo() erstellt.  
Lese- und SchreibvorgangIn PIPE erfolgt die Lese- und Schreiboperation gleichzeitig.  Beim FIFO ist es nicht erforderlich, dass sowohl Lese- als auch Schreiboperation gleichzeitig erfolgen.  
ExistenzPIPE verschwindet, sobald es geschlossen wird oder einer der Prozesse (übergeordnet oder untergeordnet) die Ausführung beendet.  FIFO existiert auch beim Aufrufen von Prozessexit. Sie bleiben bis zum Neustart des Systems erhalten.  
Kontrolle über Eigentum und BerechtigungenPIPE hat keine Kontrolle über Eigentum und Berechtigungen.  Da es sich bei FIFO um eine Datei handelt, können Sie den Besitz und die Berechtigungen steuern.  
NaturPIPE ist unidirektional.  FIFO ist bidirektional. Das gleiche FIFO kann zum Lesen und Schreiben verwendet werden.  
KommunikationsmodusPIPE bietet Simplex-Datenfluss.  FIFO bietet einen Halbduplex-Datenfluss.  
KommunikationIn PIPE gehört die Kommunikation zu den Prozessen mit einem gemeinsamen Vorfahren (verwandter Prozess).  In FIFO ist es nicht erforderlich, dass der Prozess einen gemeinsamen Vorfahren für die Kommunikation hat (nicht verwandter Prozess).  

 

osky