Contents
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.
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.
Lesen Sie auch: Unterschied zwischen Calloc () und Malloc ()
VERGLEICHSGRUNDLAGE | ROHR | FIFO |
Beschreibung | Sie sind unbenannte IPC-Objekte. | Sie werden als IPC-Objekt bezeichnet. |
Kommunikation | FIFO 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. |
Existenz | PIPE existiert nicht im Dateisystem. | FIFO existiert im Dateisystem. |
Prozesse | In PIPE findet die Datenübertragung zwischen Kindprozess und Elternprozess statt. | FIFO haben mehrere Prozesse, die darüber kommunizieren, wie mehrere Client-Server-Anwendungen. |
Schaffung | PIPE wird durch die Funktion pipe() erstellt. | FIFO wird von der Funktion mkfifo() erstellt. |
Lese- und Schreibvorgang | In PIPE erfolgt die Lese- und Schreiboperation gleichzeitig. | Beim FIFO ist es nicht erforderlich, dass sowohl Lese- als auch Schreiboperation gleichzeitig erfolgen. |
Existenz | PIPE 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 Berechtigungen | PIPE 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. |
Natur | PIPE ist unidirektional. | FIFO ist bidirektional. Das gleiche FIFO kann zum Lesen und Schreiben verwendet werden. |
Kommunikationsmodus | PIPE bietet Simplex-Datenfluss. | FIFO bietet einen Halbduplex-Datenfluss. |
Kommunikation | In 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). |
Fühlen Sie sich oft gestresst, verspannt und auf der Suche nach einer Lösung für Ihr…
Haben Sie sich jemals gefragt, warum Ihr Morgenkaffee anders schmeckt als der Espresso aus Ihrem…
Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…
Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…
In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…
Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…