QNativeIpcKey Class
La clase QNativeIpcKey contiene una clave nativa utilizada por QSystemSemaphore y QSharedMemory. Más...
| Cabecera: | #include <QNativeIpcKey> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Desde: | Qt 6.6 |
Esta clase es igual-comparable.
Tipos Públicos
| enum class | Type { SystemV, PosixRealtime, Windows } |
Funciones Públicas
| 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) |
Miembros públicos estáticos
| const QNativeIpcKey::Type | DefaultTypeForOs |
| QNativeIpcKey | fromString(const QString &text) |
| QNativeIpcKey::Type | legacyDefaultTypeForOs() |
No miembros relacionados
| 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) |
Descripción detallada
Las clases QSharedMemory y QSystemSemaphore identifican su recurso utilizando un identificador de todo el sistema conocido como "clave". El valor de clave de bajo nivel, así como el tipo de clave, se encapsulan en Qt mediante la clase QNativeIpcKey.
Estas dos clases también proporcionan los medios para crear claves nativas a partir de un identificador multiplataforma, usando QSharedMemory::platformSafeKey() y QSystemSemaphore::platformSafeKey(). Las aplicaciones nunca deben compartir la entrada a esas funciones, ya que diferentes versiones de Qt pueden realizar diferentes transformaciones, resultando en diferentes claves nativas. En su lugar, la aplicación que creó el objeto IPC debería comunicar la clave nativa resultante utilizando los métodos descritos a continuación.
Para más detalles sobre los tipos de claves, limitaciones específicas de la plataforma e interoperabilidad con aplicaciones antiguas o no Qt, consulte la documentación Claves IPC nativas. Esto incluye información importante para aplicaciones en sandbox en plataformas Apple, incluyendo todas las aplicaciones obtenidas a través de la App Store de Apple.
Comunicación de claves a otros procesos
Comunicación de claves a otros procesos Qt
Si el otro proceso soporta QNativeIpcKey, la mejor manera de comunicarse es a través de la representación de cadena obtenida de toString() y analizándola usando fromString(). Esta representación puede ser almacenada en un archivo cuyo nombre es bien conocido o pasada en la línea de comandos a un proceso hijo usando QProcess::setArguments().
Si el otro proceso no soporta QNativeIpcKey, entonces los dos procesos pueden intercambiar el nativeKey() pero es probable que el código anterior no pueda ajustar su tipo de clave. La función legacyDefaultTypeForOs() devuelve el tipo que utilizaba el código antiguo, que puede no coincidir con la constante DefaultTypeForOs. Esto sigue siendo cierto incluso si la aplicación antigua no está utilizando la misma compilación que la nueva (por ejemplo, es una aplicación Qt 5), siempre que las opciones pasadas al script Qt configure sean las mismas.
Comunicación de claves a procesos que no son Qt
Cuando se comunica con procesos que no son Qt, la aplicación debe arreglárselas para obtener el tipo de clave que el otro proceso está utilizando. Esto es importante particularmente en sistemas Unix, donde tanto PosixRealtime como SystemV son comunes.
Representación en cadena de las claves nativas
El formato de la cadena de representación de una QNativeIpcKey pretende ser estable y por tanto compatible hacia atrás y hacia adelante, siempre que el tipo de clave esté soportado por la versión de Qt en cuestión. Es decir, un Qt antiguo fallará al analizar la representación en cadena de un tipo de clave introducido después de su lanzamiento. Sin embargo, analizar con éxito una representación de cadena no implica que las clases Qt puedan crear con éxito un objeto de ese tipo; las aplicaciones deberían verificar el soporte usando QSharedMemory::isKeyTypeSupported() y QSystemSemaphore::isKeyTypeSupported().
El formato de la representación de cadena está formado por dos componentes, separados por dos puntos (':'). El primer componente es el tipo de clave, descrito en la tabla siguiente. El segundo componente es una carga útil específica del tipo, utilizando percent-encoding. Para todos los tipos de clave admitidos actualmente, la forma descodificada es idéntica al contenido del campo nativeKey().
| Tipo de clave | Representación de cadena |
| PosixRealtime | "posix" |
| SystemV | "systemv" |
| Windows | "windows" |
| No estándar SystemV | "systemv-" seguido de un número decimal |
Este formato se asemeja a una URI y permite su análisis mediante funciones de análisis de URI/URL, como QUrl. Al ser analizado por dicha API, el tipo de clave aparecerá como scheme, y la carga útil será path. El uso de query o fragments está reservado.
Véase también QSharedMemory y QSystemSemaphore.
Documentación de tipos de miembros
enum class QNativeIpcKey::Type
Este enum describe el tipo de backend para el objeto IPC. Para más detalles sobre los tipos de clave, consulte la documentación Claves IPC nativas.
| Constante | Valor | Descripción |
|---|---|---|
QNativeIpcKey::Type::SystemV | 0x51 | API X/Open System Initiative (XSI) o System V (SVr4) |
QNativeIpcKey::Type::PosixRealtime | 0x100 | API IEEE 1003.1b (POSIX.1b) |
QNativeIpcKey::Type::Windows | 0x101 | API Win32 |
Documentación de las funciones miembro
[constexpr noexcept] QNativeIpcKey::QNativeIpcKey()
Construye un objeto QNativeIpcKey de tipo DefaultTypeForOs con una clave vacía.
[explicit constexpr noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey::Type type)
QNativeIpcKey::QNativeIpcKey(const QString &key, QNativeIpcKey::Type type = DefaultTypeForOs)
Construye un objeto QNativeIpcKey que contiene la clave nativa key (o vacío en la sobrecarga sin el parámetro) para el tipo type.
QNativeIpcKey::QNativeIpcKey(const QNativeIpcKey &other)
[noexcept] QNativeIpcKey::QNativeIpcKey(QNativeIpcKey &&other)
QNativeIpcKey &QNativeIpcKey::operator=(const QNativeIpcKey &other)
[noexcept] QNativeIpcKey &QNativeIpcKey::operator=(QNativeIpcKey &&other)
Copia o desplaza el contenido de other.
[noexcept] QNativeIpcKey::~QNativeIpcKey()
Elimina este objeto QNativeIpcKey.
[static] QNativeIpcKey QNativeIpcKey::fromString(const QString &text)
Analiza la cadena text y devuelve la correspondiente QNativeIpcKey. Las representaciones de cadena son útiles para informar a otros procesos de la clave que este proceso ha creado y a la que deben adjuntarse.
Si no se ha podido analizar la cadena, esta función devuelve un objeto invalid.
Véase también toString() y isValid().
[noexcept] bool QNativeIpcKey::isEmpty() const
Devuelve verdadero si nativeKey() está vacío.
Véase también nativeKey().
[noexcept] bool QNativeIpcKey::isValid() const
Devuelve true si este objeto contiene un tipo de clave IPC nativo válido. Los tipos no válidos suelen ser el resultado de un fallo al analizar una representación de cadena utilizando fromString().
Esta función no comprueba si la cadena de claves es realmente compatible o válida para el sistema operativo actual.
Véase también type() y fromString().
[static noexcept] QNativeIpcKey::Type QNativeIpcKey::legacyDefaultTypeForOs()
Devuelve el Type que corresponde a la clave IPC nativa que QSharedMemory y QSystemSemaphore solían utilizar antes de Qt 6.6. Las aplicaciones y bibliotecas que deban mantener la compatibilidad con código que utilice cualquiera de las dos clases y que haya sido compilado con Qt antes de la versión 6.6 pueden utilizar esta función para determinar qué tipo de IPC pueden estar utilizando las otras aplicaciones.
Tenga en cuenta que esta función depende de que Qt haya sido compilado con idénticas opciones de configuración.
[noexcept] QString QNativeIpcKey::nativeKey() const
Devuelve la cadena de claves nativa asociada a este objeto.
Véase también setNativeKey() y type().
void QNativeIpcKey::setNativeKey(const QString &newKey)
Establece la clave nativa de este objeto en newKey.
Véase también nativeKey() y setType().
[constexpr] void QNativeIpcKey::setType(QNativeIpcKey::Type type)
Establece el tipo IPC de este objeto a type.
Véase también type() y setNativeKey().
[noexcept] void QNativeIpcKey::swap(QNativeIpcKey &other)
Intercambia esta tecla y tipo IPC nativo con other. Esta operación es muy rápida y nunca falla.
QString QNativeIpcKey::toString() const
Devuelve la representación de cadena de este objeto. Las representaciones de cadena son útiles para informar a otros procesos de la clave que este proceso ha creado y a la que deberían adjuntarla.
Esta función devuelve una cadena nula si el objeto actual es invalid.
Véase también fromString().
[constexpr noexcept] QNativeIpcKey::Type QNativeIpcKey::type() const
Devuelve el tipo de clave asociado a este objeto.
Documentación de variables miembro
const QNativeIpcKey::Type QNativeIpcKey::DefaultTypeForOs
Esta variable de expresión constante contiene el tipo IPC nativo por defecto para el sistema operativo actual. Será Type::Windows para sistemas Windows y Type::PosixRealtime en cualquier otro lugar. Tenga en cuenta que esta constante es diferente de la que tenían por defecto QSharedMemory y QSystemSemaphore en la mayoría de los sistemas Unix anteriores a Qt 6.6; consulte legacyDefaultTypeForOs() para obtener más información.
No miembros relacionados
[noexcept] size_t qHash(const QNativeIpcKey &key, size_t seed = 0)
Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.
[noexcept] void swap(QNativeIpcKey &value1, QNativeIpcKey &value2)
Intercambia la clave IPC nativa y el tipo value1 con value2. Esta operación es muy rápida y nunca falla.
[noexcept] bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
[noexcept] bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs)
Devuelve verdadero si los objetos lhs y rhs tienen el mismo (o diferente) contenido.
© 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.