PySide6.QtCore.QNativeIpcKey

class QNativeIpcKey

QNativeIpcKey 类持有由 QSystemSemaphoreQSharedMemory 使用的本地键。更多

在版本6.6中添加。

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QSharedMemoryQSystemSemaphore 类使用一个称为“键”的系统范围标识符来识别它们的资源。低级别的键值以及键类型在 Qt 中使用 QNativeIpcKey 类进行封装。

这两个类还提供了使用QSharedMemory::platformSafeKey()和QSystemSemaphore::platformSafeKey()从跨平台标识符创建本地键的方法。应用程序不应共享这些函数的输入,因为不同版本的Qt可能会执行不同的转换,从而导致不同的本地键。相反,创建IPC对象的应用程序应使用下面描述的方法来传递生成的本地键。

有关键类型、平台特定限制以及与旧版或非Qt应用程序的互操作性的详细信息,请参阅Native IPC Keys文档。其中包括关于Apple平台上沙盒应用程序的重要信息,包括通过Apple App Store获得的所有应用程序。

将密钥传递给其他进程

将密钥传递给其他Qt进程

如果其他进程支持QNativeIpcKey,最佳的通信方式是通过从toString()获取的字符串表示,并使用fromString()进行解析。这种表示可以存储在一个众所周知的文件名中,或者通过setArguments()在命令行中传递给子进程。

如果其他进程不支持QNativeIpcKey,那么这两个进程可以交换nativeKey(),但旧代码可能无法调整其键类型。legacyDefaultTypeForOs()函数返回旧代码使用的类型,这可能与DefaultTypeForOs常量不匹配。即使旧应用程序与新应用程序使用的构建不同(例如,它是Qt 5应用程序),只要传递给Qt配置脚本的选项相同,这一点仍然成立。

将密钥传递给非Qt进程

与非Qt进程通信时,应用程序必须安排获取其他进程正在使用的密钥类型。这在Unix系统上尤为重要,因为PosixRealtimeSystemV都很常见。

本地键的字符串表示

QNativeIpcKey 的字符串表示格式旨在保持稳定,因此具有向后和向前兼容性,前提是相关 Qt 版本支持该键类型。也就是说,较旧的 Qt 版本将无法解析在其发布后引入的键类型的字符串表示。然而,成功解析字符串表示并不意味着 Qt 类可以成功创建该类型的对象;应用程序应使用 QSharedMemory::isKeyTypeSupported() 和 QSystemSemaphore::isKeyTypeSupported() 来验证支持情况。

字符串表示的格式由两个组件组成,用冒号(':')分隔。第一个组件是键类型,如下表所述。第二个组件是类型特定的有效载荷,使用percent-encoding。对于所有当前支持的键类型,解码形式与nativeKey()字段的内容相同。

键类型

字符串表示

PosixRealtime

"posix"

SystemV

"systemv"

Windows

"windows"

非标准 SystemV

"systemv-" 后跟一个十进制数字

这种格式类似于URI,并允许使用URI/URL解析函数进行解析,例如QUrl。当通过此类API解析时,键类型将显示为scheme,而有效载荷将是path。查询或片段的使用是保留的。

class Type

此枚举描述了IPC对象的后端类型。有关键类型的详细信息,请参阅Native IPC Keys文档。

常量

描述

QNativeIpcKey.Type.SystemV

X/Open 系统倡议 (XSI) 或 System V (SVr4) API

QNativeIpcKey.Type.PosixRealtime

IEEE 1003.1b (POSIX.1b) API

QNativeIpcKey.Type.Windows

Win32 API

另请参阅

setType() type()

PySide6.QtCore.QNativeIpcKey.DefaultTypeForOs
__init__()

构造一个类型为DefaultTypeForOsQNativeIpcKey对象,该对象具有空键。

__init__(type)
Parameters:

类型Type

__init__(other)
Parameters:

其他QNativeIpcKey

__init__(k[, type=QNativeIpcKey.DefaultTypeForOs])
Parameters:
static fromString(string)
Parameters:

字符串 – str

Return type:

QNativeIpcKey

解析字符串形式 text 并返回相应的 QNativeIpcKey。字符串表示形式对于通知其他进程此进程创建的密钥以及它们应附加的密钥非常有用。

如果字符串无法解析,此函数将返回一个无效的对象。

另请参阅

toString() isValid()

isEmpty()
Return type:

布尔

如果nativeKey()为空,则返回true。

另请参阅

nativeKey()

isValid()
Return type:

布尔

如果此对象包含有效的本地IPC键类型,则返回true。无效类型通常是由于使用fromString()解析字符串表示失败的结果。

此函数不检查键字符串是否实际支持或对当前操作系统有效。

另请参阅

type() fromString()

static legacyDefaultTypeForOs()
Return type:

类型

返回与Type对应的原生IPC键类型,该类型是QSharedMemoryQSystemSemaphore在Qt 6.6之前使用的。必须保留与使用Qt 6.6之前版本编译的任一类的代码兼容的应用程序和库,可以使用此函数来确定其他应用程序可能使用的IPC类型。

请注意,此函数依赖于Qt在配置时使用了相同的选项进行构建。

nativeKey()
Return type:

字符串

返回与此对象关联的本机键字符串。

另请参阅

setNativeKey() type()

__ne__(rhs)
Parameters:

rhsQNativeIpcKey

Return type:

布尔

__eq__(rhs)
Parameters:

rhsQNativeIpcKey

Return type:

布尔

setNativeKey(newKey)
Parameters:

newKey – str

将此对象的本地键设置为newKey

另请参阅

nativeKey() setType()

setType(type)
Parameters:

类型Type

将此对象的IPC类型设置为type

另请参阅

type() setNativeKey()

swap(other)
Parameters:

其他QNativeIpcKey

将此对象的本地IPC键和类型other进行交换。此操作非常快速且永远不会失败。

toString()
Return type:

字符串

返回此对象的字符串表示形式。字符串表示形式对于通知其他进程此进程创建的密钥以及它们应该附加的密钥非常有用。

如果当前对象是invalid,此函数返回一个空字符串。

另请参阅

fromString()

type()
Return type:

类型

返回与此对象关联的键类型。

另请参阅

nativeKey() setType()