Sur cette page

QNativeIpcKey Class

La classe QNativeIpcKey contient une clé native utilisée par QSystemSemaphore et QSharedMemory. Plus...

En-tête : #include <QNativeIpcKey>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Depuis : Qt 6.6

Cette classe est comparable à l'égalité.

Types publics

enum class Type { SystemV, PosixRealtime, Windows }

Fonctions publiques

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)

Membres publics statiques

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)

Description détaillée

Les classes QSharedMemory et QSystemSemaphore identifient leur ressource à l'aide d'un identifiant à l'échelle du système appelé "clé". La valeur de la clé de bas niveau ainsi que le type de clé sont encapsulés dans Qt XML à l'aide de la classe QNativeIpcKey.

Ces deux classes fournissent également les moyens de créer des clés natives à partir d'un identifiant multiplateforme, en utilisant QSharedMemory::platformSafeKey() et QSystemSemaphore::platformSafeKey(). Les applications ne doivent jamais partager l'entrée de ces fonctions, car les différentes versions de Qt peuvent effectuer des transformations différentes, ce qui se traduit par des clés natives différentes. Au lieu de cela, l'application qui a créé l'objet IPC doit communiquer la clé native résultante à l'aide des méthodes décrites ci-dessous.

Pour plus de détails sur les types de clés, les limitations spécifiques aux plates-formes et l'interopérabilité avec des applications plus anciennes ou non Qt, voir la documentation sur les clés IPC natives. Cela inclut des informations importantes pour les applications en bac à sable sur les plateformes Apple, y compris toutes les applications obtenues via l'App Store d'Apple.

Communiquer des clés à d'autres processus

Communiquer des clés à d'autres processus Qt

Si l'autre processus prend en charge QNativeIpcKey, la meilleure façon de communiquer est d'utiliser la représentation sous forme de chaîne de caractères obtenue à partir de toString() et de l'analyser à l'aide de fromString(). Cette représentation peut être stockée dans un fichier dont le nom est bien connu ou transmise sur la ligne de commande à un processus enfant en utilisant QProcess::setArguments().

Si l'autre processus ne prend pas en charge QNativeIpcKey, les deux processus peuvent échanger la fonction nativeKey(), mais le code le plus ancien sera probablement incapable d'ajuster son type de clé. La fonction legacyDefaultTypeForOs() renvoie le type utilisé par l'ancien code, qui peut ne pas correspondre à la constante DefaultTypeForOs. Cela reste vrai même si l'ancienne application n'utilise pas la même version que la nouvelle (par exemple, s'il s'agit d'une application Qt 5), à condition que les options transmises au script Qt configure soient les mêmes.

Communiquer des clés à des processus non-Qt

Lors de la communication avec des processus non-Qt, l'application doit s'arranger pour obtenir le type de clé utilisé par l'autre processus. Ceci est particulièrement important sur les systèmes Unix, où les clés PosixRealtime et SystemV sont courantes.

Représentation sous forme de chaîne des clés natives

Le format de la représentation en chaîne d'une QNativeIpcKey est censé être stable et donc compatible en amont et en aval, à condition que le type de clé soit pris en charge par la version de Qt en question. En d'autres termes, une version plus ancienne de Qt ne parviendra pas à analyser la représentation sous forme de chaîne d'un type de clé introduit après sa sortie. Cependant, le fait d'analyser avec succès une représentation sous forme de chaîne ne signifie pas que les classes Qt peuvent créer avec succès un objet de ce type ; les applications doivent vérifier la prise en charge en utilisant QSharedMemory::isKeyTypeSupported() et QSystemSemaphore::isKeyTypeSupported().

Le format de la représentation de la chaîne est formé de deux composants, séparés par deux points (':'). Le premier composant est le type de clé, décrit dans le tableau ci-dessous. Le deuxième élément est une charge utile spécifique au type, utilisant percent-encoding. Pour tous les types de clés actuellement pris en charge, la forme décodée est identique au contenu du champ nativeKey().

Type de cléReprésentation sous forme de chaîne
PosixRealtime"posix"
SystemV"systemv"
Windows"windows"
Non standard SystemV"systemv-" suivi d'un nombre décimal

Ce format ressemble à un URI et peut être analysé à l'aide de fonctions d'analyse URI/URL, telles que QUrl. Lorsqu'il est analysé par une telle API, le type de clé apparaîtra sous la forme scheme, et la charge utile sous la forme path. L'utilisation d'une requête ou de fragments est réservée.

Voir également QSharedMemory et QSystemSemaphore.

Documentation sur les types de membres

enum class QNativeIpcKey::Type

Cette énumération décrit le type de backend de l'objet IPC. Pour plus de détails sur les types de clés, voir la documentation sur les clés IPC natives.

ConstanteValeurDescription de l'objet
QNativeIpcKey::Type::SystemV0x51API X/Open System Initiative (XSI) ou System V (SVr4)
QNativeIpcKey::Type::PosixRealtime0x100API IEEE 1003.1b (POSIX.1b)
QNativeIpcKey::Type::Windows0x101API Win32

Voir également setType() et type().

Documentation des fonctions membres

[constexpr noexcept] QNativeIpcKey::QNativeIpcKey()

Construit un objet QNativeIpcKey de type DefaultTypeForOs avec une clé vide.

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

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

Construit un objet QNativeIpcKey contenant la clé native key (ou vide dans la surcharge sans le paramètre) pour le type type.

QNativeIpcKey::QNativeIpcKey(const QNativeIpcKey &other)

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

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

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

Copie ou déplace le contenu de other.

[noexcept] QNativeIpcKey::~QNativeIpcKey()

Se débarrasse de cet objet QNativeIpcKey.

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

Analyse la chaîne de caractères text et renvoie la chaîne correspondante QNativeIpcKey. Les représentations sous forme de chaîne sont utiles pour informer les autres processus de la clé créée par ce processus et à laquelle ils doivent s'attacher.

Si la chaîne n'a pas pu être analysée, cette fonction renvoie un objet invalid.

Voir aussi toString() et isValid().

[noexcept] bool QNativeIpcKey::isEmpty() const

Retourne vrai si le site nativeKey() est vide.

Voir aussi nativeKey().

[noexcept] bool QNativeIpcKey::isValid() const

Retourne true si cet objet contient un type de clé IPC natif valide. Les types non valides sont généralement le résultat d'un échec de l'analyse d'une chaîne de caractères à l'aide de fromString().

Cette fonction ne vérifie pas si la chaîne de clés est réellement prise en charge ou valide pour le système d'exploitation actuel.

Voir aussi type() et fromString().

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

Renvoie le Type qui correspond à la clé IPC native que QSharedMemory et QSystemSemaphore utilisaient avant la version 6.6 de Qt. Les applications et les bibliothèques qui doivent rester compatibles avec le code utilisant l'une ou l'autre classe qui a été compilé avec Qt avant la version 6.6 peuvent utiliser cette fonction pour déterminer quel type d'IPC les autres applications peuvent utiliser.

Notez que cette fonction repose sur le fait que Qt a été compilé avec des options de configuration identiques.

[noexcept] QString QNativeIpcKey::nativeKey() const

Renvoie la chaîne de caractères de la clé native associée à cet objet.

Voir aussi setNativeKey() et type().

void QNativeIpcKey::setNativeKey(const QString &newKey)

Définit la clé native de cet objet à newKey.

Voir également nativeKey() et setType().

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

Définit le type IPC de cet objet à type.

Voir aussi type() et setNativeKey().

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

Remplace la touche et le type IPC natifs par other. Cette opération est très rapide et n'échoue jamais.

QString QNativeIpcKey::toString() const

Renvoie la représentation sous forme de chaîne de caractères de cet objet. Les représentations sous forme de chaîne sont utiles pour informer les autres processus de la clé que ce processus a créée et à laquelle ils doivent s'attacher.

Cette fonction renvoie une chaîne nulle si l'objet actuel est invalid.

Voir également fromString().

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

Renvoie le type de clé associé à cet objet.

Voir également nativeKey() et setType().

Documentation sur les variables membres

const QNativeIpcKey::Type QNativeIpcKey::DefaultTypeForOs

Cette variable d'expression constante contient le type IPC natif par défaut pour le système d'exploitation actuel. Il s'agit de Type::Windows pour les systèmes Windows et de Type::PosixRealtime ailleurs. Notez que cette constante est différente de la valeur par défaut de QSharedMemory et QSystemSemaphore sur la majorité des systèmes Unix antérieurs à la version 6.6 de Qt XML ; voir legacyDefaultTypeForOs() pour plus d'informations.

Non-membres associés

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

Renvoie la valeur de hachage pour key, en utilisant seed comme base de calcul.

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

Remplace la clé IPC native et le type value1 par value2. Cette opération est très rapide et n'échoue jamais.

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

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

Retourne vrai si les objets lhs et rhs ont le même contenu (ou un contenu différent).

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