class QNativeIpcKey#

QNativeIpcKey 类包含由 QSystemSemaphoreQSharedMemory 使用的本地密钥。 更多

新增于版本 6.6。

概述#

方法#

静态函数#

备注

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

详细信息#

QSharedMemoryQSystemSemaphore类使用系统标识符“键”来标识它们的资源。低级键值以及键类型都通过Qt中的QNativeIpcKey类封装。

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

有关键类型、特定平台的限制、以及与旧版或非Qt应用程序的互操作性的详细信息,请参阅本地IPC键文档。这对于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对象的后端类型。有关键类型的详细信息,请参阅 原生IPC键 文档。

常量

描述

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__()#

构造一个类型为 DefaultTypeForOs 且密钥为空的 QNativeIpcKey 对象。

__init__(type)
参数

typeType

__init__(other)
参数

otherQNativeIpcKey

__init__(k[, type=QNativeIpcKey.DefaultTypeForOs])
参数
  • k – str

  • typeType

静态 fromString(string)#
参数

string – str

返回类型

QNativeIpcKey

解析 text 的字符串形式并返回相应的 QNativeIpcKey。字符串表示形式对于通知其他进程此进程创建的键及其应附加到的是有用的。

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

另请参阅

toString() isValid()

isEmpty()#
返回类型

bool

返回 true 如果 nativeKey() 为空。

另请参阅

nativeKey()

isValid()#
返回类型

bool

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

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

另请参阅

type() fromString()

static legacyDefaultTypeForOs()#
返回类型

类型

返回与先于 Qt 6.6 版本使用的本机 IPC 键对应的 Type。需要与使用该类(编译的代码为 Qt 6.6 版本之前)保持兼容的应用程序和库可以使用此函数来确定其他应用程序可能使用哪些 IPC 类型。

请注意,此函数依赖于 Qt 在构建时具有相同的配置选项。

nativeKey()#
返回类型

字符串

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

另请参阅

setNativeKey() type()

__ne__(rhs)#
参数

rhsQNativeIpcKey

返回类型

bool

__eq__(rhs)#
参数

rhsQNativeIpcKey

返回类型

bool

setNativeKey(newKey)#
参数

newKey – 字符串

将此对象的本地密钥设置为 newKey

另请参阅

nativeKey() setType()

setType(type)#
参数

typeType

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

另请参阅

type() setNativeKey()

swap(other)#
参数

otherQNativeIpcKey

交换本对象和 other 的本地 IPC 密钥和类型。此操作非常快速且不会失败。

toString()#
返回类型

字符串

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

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

另请参阅

fromString()

type()#
返回类型

类型

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

另请参阅

nativeKey() setType()