Interprozesskommunikation ist die Verbreitung oder der Austausch von Informationen zwischen verschiedenen Prozessen. Welche Medien gibt es also zwischen verschiedenen Prozessen, auf die beide Parteien zugreifen können? Die Benutzerbereiche von Prozessen sind unabhängig voneinander und können im Allgemeinen nicht aufeinander zugreifen. Die einzige Ausnahme ist der gemeinsam genutzte Speicherbereich. Der Systemraum ist jedoch ein „öffentlicher Ort“, sodass der Kernel offensichtlich solche Bedingungen bereitstellen kann. Darüber hinaus sind es die Peripheriegeräte, auf die beide Parteien zugreifen können. In diesem Sinne können zwei Prozesse natürlich auch Informationen über gewöhnliche Dateien auf der Festplatte oder über bestimmte Einträge und Datensätze in der „Registry“ oder anderen Datenbanken austauschen. Im weitesten Sinne handelt es sich dabei auch um ein Mittel zur Interprozesskommunikation, dies wird jedoch im Allgemeinen nicht zur „Interprozesskommunikation“ gezählt. Weil die Effizienz dieser Kommunikationsmethoden zu gering ist und die Anforderungen der Menschen an die Kommunikation zwischen Prozessen darin bestehen, über ein gewisses Maß an Echtzeitleistung zu verfügen.
Verwandte Empfehlungen: „php-Tutorial“
Mehrere Hauptmethoden der Interprozesskommunikation unter Linux:
1. Pipes und Named Pipes
Pipes können für die Kommunikation zwischen Prozessen mit Affinitätsbeziehungen verwendet werden. Daher besteht die Möglichkeit, dass Pipes keine Namen haben Funktionalität ermöglicht es auch die Kommunikation zwischen unabhängigen Prozessen.
Es gibt drei Arten von Pipes:
(1) Gewöhnliche Pipe-PIPE: Es gibt normalerweise Einschränkungen, die andere ist nur für die Einwegübertragung geeignet Es kann nur zwischen übergeordneten und untergeordneten Prozessen verwendet werden.
(2) Streampipe s_pipe: Die erste Einschränkung wird aufgehoben und eine bidirektionale Übertragung ist möglich.
(3) Named Pipe name_pipe: Die zweite Einschränkung wird entfernt und die Kommunikation kann zwischen vielen unabhängigen Prozessen durchgeführt werden.
2. Signal
Signal ist eine relativ komplexe Kommunikationsmethode, die verwendet wird, um den empfangenden Prozess darüber zu informieren, dass ein Ereignis aufgetreten ist, und außerdem für die Kommunikation zwischen Prozessen verwendet wird Kommunikation: Der Prozess kann auch Signale an den Prozess selbst senden. Zusätzlich zur Unterstützung der frühen Unix-Signalsemantikfunktion Sigal unterstützt Linux auch die Signalfunktion Sigaction, deren Semantik dem Posix.1-Standard entspricht (tatsächlich basiert diese Funktion auf BSD, das zur Implementierung eines zuverlässigen Signalmechanismus die externe Schnittstelle vereinheitlichen und die Signalfunktion mithilfe der Sigaction-Funktion erneut implementieren kann.
3. Nachrichtenwarteschlange (Nachrichtenwarteschlange)
Die Nachrichtenwarteschlange ist eine verknüpfte Liste von Nachrichten, einschließlich der Nachrichtenwarteschlange des Posix-Nachrichtenwarteschlangensystems. Ein Prozess mit ausreichenden Berechtigungen kann Nachrichten zur Warteschlange hinzufügen, und ein Prozess mit Leseberechtigungen kann Nachrichten aus der Warteschlange lesen. Die Nachrichtenwarteschlange überwindet die Mängel von Signalen, die eine geringe Informationsmenge übertragen, Pipes können nur unformatierte Byteströme übertragen und die Puffergröße ist begrenzt.
4. Gemeinsamer Speicher
ermöglicht mehreren Prozessen den Zugriff auf denselben Speicherplatz, was die schnellste verfügbare IPC-Form ist. Es ist auf die geringere Betriebseffizienz anderer Kommunikationsmechanismen ausgelegt. Es wird häufig in Verbindung mit anderen Kommunikationsmechanismen wie Semaphoren verwendet, um eine Synchronisierung und einen gegenseitigen Ausschluss zwischen Prozessen zu erreichen.
5. Semaphor (Semaphor)
wird hauptsächlich als Mittel zur Synchronisierung zwischen Prozessen und zwischen verschiedenen Threads desselben Prozesses verwendet.
6. Socket
Ein allgemeinerer prozessübergreifender Kommunikationsmechanismus, der für die prozessübergreifende Kommunikation zwischen verschiedenen Maschinen verwendet werden kann. Es wurde ursprünglich für den BSD-Zweig von Unix-Systemen entwickelt, ist aber mittlerweile allgemein auf andere Unix-ähnliche Systeme portierbar: Sowohl Linux- als auch System V-Varianten unterstützen Sockets.
Das obige ist der detaillierte Inhalt vonEs gibt verschiedene Möglichkeiten, zwischen PHP-Prozessen zu kommunizieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!