Kommunikation zwischen Prozessen

Qt unterstützt viele Möglichkeiten der Kommunikation mit anderen Prozessen, die im selben System oder in verschiedenen Systemen laufen. Es gibt grundsätzlich drei Arten von Interprozess-Kommunikationsmechanismen:

  1. Synchronisationsprimitive
  2. Austausch von beliebigen Daten auf Byte-Ebene
  3. Übergabe strukturierter Nachrichten

Synchronisationsprimitive

Qt bietet nur eine Klasse für explizite Interprozess-Synchronisation: QSystemSemaphore. Eine QSystemSemaphore ist wie eine QSemaphore, auf die mehrere Prozesse im selben System zugreifen können. Sie wird global durch einen "Schlüssel" identifiziert, der in Qt durch die Klasse QNativeIpcKey repräsentiert wird. Zusätzlich kann Qt, abhängig vom Betriebssystem, mehrere verschiedene Backends für die gemeinsame Nutzung von Speicher unterstützen; siehe die Dokumentation Native IPC Keys für weitere Informationen und Einschränkungen.

Es ist möglich, reguläre Thread-Synchronisationsprimitive wie Mutexe, Wartebedingungen und Lese-/Schreibsperren zu verwenden, die sich im Speicher befinden, der von Prozessen gemeinsam genutzt wird. Qt bietet keine Klasse, die dies unterstützt, aber Anwendungen können Low-Level-Operationen auf bestimmten Betriebssystemen verwenden.

Andere Qt-Klassen können verwendet werden, um Sperren auf höherer Ebene bereitzustellen, wie z. B. QLockFile, oder indem eine eindeutige, systemweite Ressource erworben wird. Solche Techniken umfassen TCP oder UDP Ports oder bekannte Namen in D-Bus.

Gemeinsame Nutzung von Daten auf Byte-Ebene

Mit Daten auf Byte-Ebene können Anwendungen jedes beliebige Kommunikationsprotokoll implementieren. Die gemeinsame Nutzung von Byte-Daten kann stromorientiert (seriell) sein oder einen zufälligen Zugriff erlauben (eine ähnliche Bedingung wie bei QFileDevice::isSequential()).

Für die serielle Kommunikation bietet Qt eine Reihe verschiedener Klassen und sogar komplette Module:

Für die gemeinsame Nutzung von Daten mit wahlfreiem Zugriff innerhalb desselben Systems bietet Qt QSharedMemory. Detaillierte Informationen finden Sie in der Dokumentation zu Shared Memory.

Strukturierte Nachrichtenübermittlung

Qt bietet auch eine Reihe von Techniken, um strukturierte Nachrichten mit anderen Prozessen auszutauschen. Anwendungen können auf den obigen Lösungen auf Byte-Ebene aufbauen, z. B. durch Verwendung von QJsonDocument oder QXmlStreamReader / QXmlStreamWriter über HTTP, um JSONRPC bzw. XMLRPC auszuführen, oder QCborValue mit QtCoAP.

Dedizierte Qt-Module für strukturierte Nachrichten und Remote Procedure Calling umfassen:

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.