QNativeIpcKey Class

Die Klasse QNativeIpcKey enthält einen nativen Schlüssel, der von QSystemSemaphore und QSharedMemory verwendet wird. Mehr...

Kopfzeile: #include <QNativeIpcKey>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Since: Qt 6.6

Diese Klasse ist gleichwertig vergleichbar.

Öffentliche Typen

enum class Type { SystemV, PosixRealtime, Windows }

Öffentliche Funktionen

QNativeIpcKey()
QNativeIpcKey(QNativeIpcKey::Type type)
QNativeIpcKey(const QString &key, QNativeIpcKey::Type type = DefaultTypeForOs)
QNativeIpcKey(const QNativeIpcKey &other)
QNativeIpcKey(QNativeIpcKey &&other)
~QNativeIpcKey()
bool isEmpty() const
bool isValid() const
QString nativeKey() const
void setNativeKey(const QString &newKey)
void setType(QNativeIpcKey::Type type)
void swap(QNativeIpcKey &other)
QString toString() const
QNativeIpcKey::Type type() const
QNativeIpcKey &operator=(QNativeIpcKey &&other)
QNativeIpcKey &operator=(const QNativeIpcKey &other)

Statische öffentliche Mitglieder

const QNativeIpcKey::Type DefaultTypeForOs
QNativeIpcKey fromString(const QString &text)
QNativeIpcKey::Type legacyDefaultTypeForOs()
size_t qHash(const QNativeIpcKey &key, size_t seed = 0)
void swap(QNativeIpcKey &value1, QNativeIpcKey &value2)
bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)

Detaillierte Beschreibung

Die Klassen QSharedMemory und QSystemSemaphore identifizieren ihre Ressource mit einem systemweiten Bezeichner, dem "Schlüssel". Der Low-Level-Schlüsselwert sowie der Schlüsseltyp werden in Qt mit der Klasse QNativeIpcKey gekapselt.

Diese beiden Klassen bieten auch die Möglichkeit, mit QSharedMemory::platformSafeKey() und QSystemSemaphore::platformSafeKey() native Schlüssel aus einem plattformübergreifenden Bezeichner zu erzeugen. Anwendungen sollten niemals die Eingabe für diese Funktionen gemeinsam nutzen, da verschiedene Versionen von Qt unterschiedliche Transformationen durchführen können, was zu unterschiedlichen nativen Schlüsseln führt. Stattdessen sollte die Anwendung, die das IPC-Objekt erstellt hat, den resultierenden nativen Schlüssel mit Hilfe der unten beschriebenen Methoden mitteilen.

Details zu den Schlüsseltypen, plattformspezifischen Einschränkungen und der Interoperabilität mit älteren oder Nicht-Qt-Anwendungen finden Sie in der Dokumentation Native IPC Keys. Diese enthält wichtige Informationen für Sandbox-Anwendungen auf Apple-Plattformen, einschließlich aller Anwendungen, die über den Apple App Store bezogen werden.

Kommunikation von Schlüsseln mit anderen Prozessen

Übermittlung von Schlüsseln an andere Qt-Prozesse

Wenn der andere Prozess QNativeIpcKey unterstützt, ist der beste Weg der Kommunikation über die String-Repräsentation, die man von toString() erhält und mit fromString() parst. Diese Repräsentation kann in einer Datei gespeichert werden, deren Name bekannt ist, oder auf der Kommandozeile an einen Kindprozess mit QProcess::setArguments() übergeben werden.

Wenn der andere Prozess QNativeIpcKey nicht unterstützt, können die beiden Prozesse die nativeKey() austauschen, aber der ältere Code ist wahrscheinlich nicht in der Lage, seinen Schlüsseltyp anzupassen. Die Funktion legacyDefaultTypeForOs() gibt den Typ zurück, den der alte Code verwendet hat, der möglicherweise nicht mit der Konstante DefaultTypeForOs übereinstimmt. Dies gilt auch dann, wenn die alte Anwendung nicht den gleichen Build wie die neue verwendet (z.B. eine Qt 5 Anwendung), vorausgesetzt, die an das Qt configure Skript übergebenen Optionen sind die gleichen.

Kommunikation von Schlüsseln mit Nicht-Qt-Prozessen

Bei der Kommunikation mit Nicht-Qt-Prozessen muss die Anwendung dafür sorgen, dass sie den Schlüsseltyp erhält, den der andere Prozess verwendet. Dies ist besonders auf Unix-Systemen wichtig, wo sowohl PosixRealtime als auch SystemV üblich sind.

String-Darstellung von nativen Schlüsseln

Das Format der String-Repräsentation eines QNativeIpcKey soll stabil und daher rückwärts- und vorwärtskompatibel sein, vorausgesetzt der Schlüsseltyp wird von der betreffenden Qt-Version unterstützt. Das bedeutet, dass ein älteres Qt die String-Repräsentation eines Schlüsseltyps, der erst nach seiner Veröffentlichung eingeführt wurde, nicht parsen kann. Das erfolgreiche Parsen einer String-Repräsentation bedeutet jedoch nicht, dass die Qt-Klassen erfolgreich ein Objekt dieses Typs erstellen können; Anwendungen sollten die Unterstützung mit QSharedMemory::isKeyTypeSupported() und QSystemSemaphore::isKeyTypeSupported() überprüfen.

Das Format der String-Darstellung besteht aus zwei Komponenten, die durch einen Doppelpunkt (':') getrennt sind. Die erste Komponente ist der Schlüsseltyp, der in der folgenden Tabelle beschrieben wird. Die zweite Komponente ist eine typspezifische Nutzlast, die percent-encoding verwendet. Für alle derzeit unterstützten Schlüsseltypen ist die entschlüsselte Form identisch mit dem Inhalt des Feldes nativeKey().

SchlüsseltypString-Darstellung
PosixRealtime"posix"
SystemV"systemv"
Windows"windows"
Nicht-Standard SystemV"systemv-" gefolgt von einer Dezimalzahl

Dieses Format ähnelt einem URI und ermöglicht das Parsen mit URI/URL-Parsing-Funktionen wie QUrl. Wenn es von einer solchen API geparst wird, erscheint der Schlüsseltyp als scheme und die Nutzlast als path. Die Verwendung von Abfragen oder Fragmenten ist vorbehalten.

Siehe auch QSharedMemory und QSystemSemaphore.

Dokumentation der Mitgliedstypen

enum class QNativeIpcKey::Type

Diese Aufzählung beschreibt den Backend-Typ für das IPC-Objekt. Details zu den Schlüsseltypen finden Sie in der Dokumentation Native IPC Keys.

KonstanteWertBeschreibung
QNativeIpcKey::Type::SystemV0x51X/Open System Initiative (XSI) oder System V (SVr4) API
QNativeIpcKey::Type::PosixRealtime0x100IEEE 1003.1b (POSIX.1b) API
QNativeIpcKey::Type::Windows0x101Win32-API

Siehe auch setType() und type().

Dokumentation der Mitgliedsfunktionen

[explicit constexpr noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey::Type type)

QNativeIpcKey::QNativeIpcKey(const QString &key, QNativeIpcKey::Type type = DefaultTypeForOs)

Konstruiert ein QNativeIpcKey Objekt mit dem nativen Schlüssel key (oder leer bei der Überladung ohne den Parameter) für den Typ type.

[noexcept] QNativeIpcKey &QNativeIpcKey::operator=(QNativeIpcKey &&other)

QNativeIpcKey &QNativeIpcKey::operator=(const QNativeIpcKey &other)

[noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey &&other)

QNativeIpcKey::QNativeIpcKey(const QNativeIpcKey &other)

Kopiert oder verschiebt den Inhalt von other.

[constexpr noexcept] QNativeIpcKey::QNativeIpcKey()

Konstruiert ein QNativeIpcKey-Objekt vom Typ DefaultTypeForOs mit einem leeren Schlüssel.

[noexcept] QNativeIpcKey::~QNativeIpcKey()

Beseitigt dieses QNativeIpcKey Objekt.

[static] QNativeIpcKey QNativeIpcKey::fromString(const QString &text)

Analysiert die Zeichenkette text und gibt die entsprechende QNativeIpcKey zurück. String-Darstellungen sind nützlich, um andere Prozesse über den Schlüssel zu informieren, den dieser Prozess erstellt hat und an den sie sich anhängen sollten.

Wenn die Zeichenkette nicht geparst werden konnte, gibt diese Funktion ein invalid Objekt zurück.

Siehe auch toString() und isValid().

[noexcept] bool QNativeIpcKey::isEmpty() const

Gibt true zurück, wenn die Datei nativeKey() leer ist.

Siehe auch nativeKey().

[noexcept] bool QNativeIpcKey::isValid() const

Gibt true zurück, wenn dieses Objekt einen gültigen nativen IPC-Schlüsseltyp enthält. Ungültige Typen sind in der Regel das Ergebnis eines Fehlers beim Parsen einer String-Darstellung mit fromString().

Diese Funktion führt keine Überprüfung durch, ob die Schlüsselzeichenkette tatsächlich unterstützt wird oder für das aktuelle Betriebssystem gültig ist.

Siehe auch type() und fromString().

[static noexcept] QNativeIpcKey::Type QNativeIpcKey::legacyDefaultTypeForOs()

Gibt die Type zurück, die dem nativen IPC-Schlüssel entspricht, den QSharedMemory und QSystemSemaphore vor Qt 6.6 verwendet haben. Anwendungen und Bibliotheken, die die Kompatibilität mit Code, der eine der beiden Klassen verwendet und mit Qt vor Version 6.6 kompiliert wurde, beibehalten müssen, können diese Funktion verwenden, um festzustellen, welchen IPC-Typ die anderen Anwendungen möglicherweise verwenden.

Beachten Sie, dass diese Funktion davon abhängt, dass Qt mit identischen configure-time Optionen kompiliert worden ist.

[noexcept] QString QNativeIpcKey::nativeKey() const

Liefert die mit diesem Objekt verknüpfte native Schlüsselzeichenfolge.

Siehe auch setNativeKey() und type().

void QNativeIpcKey::setNativeKey(const QString &newKey)

Setzt den nativen Schlüssel für dieses Objekt auf newKey.

Siehe auch nativeKey() und setType().

[constexpr] void QNativeIpcKey::setType(QNativeIpcKey::Type type)

Setzt den IPC-Typ dieses Objekts auf type.

Siehe auch type() und setNativeKey().

[noexcept] void QNativeIpcKey::swap(QNativeIpcKey &other)

Tauscht diesen nativen IPC-Schlüssel und -Typ mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

QString QNativeIpcKey::toString() const

Gibt die String-Darstellung dieses Objekts zurück. String-Darstellungen sind nützlich, um andere Prozesse über den Schlüssel zu informieren, den dieser Prozess erstellt hat und an den sie sich anhängen sollten.

Diese Funktion gibt einen Null-String zurück, wenn das aktuelle Objekt invalid ist.

Siehe auch fromString().

[constexpr noexcept] QNativeIpcKey::Type QNativeIpcKey::type() const

Gibt den mit diesem Objekt verbundenen Schlüsseltyp zurück.

Siehe auch nativeKey() und setType().

Dokumentation der Mitgliedsvariablen

const QNativeIpcKey::Type QNativeIpcKey::DefaultTypeForOs

Diese konstante Ausdrucksvariable enthält den standardmäßigen nativen IPC-Typ für das aktuelle Betriebssystem. Sie lautet Type::Windows für Windows-Systeme und Type::PosixRealtime für andere Systeme. Beachten Sie, dass sich diese Konstante von den Standardwerten QSharedMemory und QSystemSemaphore auf den meisten Unix-Systemen vor Qt 6.6 unterscheidet; siehe legacyDefaultTypeForOs() für weitere Informationen.

Verwandte Nicht-Mitglieder

[noexcept] bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)

[noexcept] bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)

Gibt true zurück, wenn die Objekte lhs und rhs den gleichen (oder einen unterschiedlichen) Inhalt haben.

[noexcept] size_t qHash(const QNativeIpcKey &key, size_t seed = 0)

Gibt den Hash-Wert für key zurück, wobei seed als Startwert für die Berechnung verwendet wird.

[noexcept] void swap(QNativeIpcKey &value1, QNativeIpcKey &value2)

Tauscht die native IPC-Taste und den Typ value1 mit value2. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

© 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.