class QDBusUnixFileDescriptor#

QDBusUnixFileDescriptor 类包含一个 Unix 文件描述符。 更多

摘要#

方法#

静态函数#

注意事项

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

详细信息#

QDBusUnixFileDescriptor 类用于存储一个用于 Qt D-Bus 模块的 Unix 文件描述符。这使得应用程序可以在 D-Bus 连接上发送和接收 Unix 文件描述符,并自动映射到 D-Bus 类型 'h'。

可以使用 QDBusUnixFileDescriptors 类型的对象作为信号的参数和在 slots 中使用,这些信号和 slots 通过注册方法 registerObject 被导出到 D-Bus。

QDBusUnixFileDescriptor 不会获取文件描述符的所有权。相反,它将使用 Unix 系统调用 dup(2) 来创建文件描述符的副本。此文件描述符属于 QDBusUnixFileDescriptor 对象,不应由用户存储或关闭。相反,如果您需要副本,您应该自己创建。

可用性#

Unix 文件描述符传递不是在所有 D-Bus 连接中都可用。在 Unix 系统上,该功能在 D-Bus 库和总线守护进程版本 1.4 及以上时可用。Qt D-Bus 在编译时间和运行时自动启用此功能,如果找到了该版本。

要验证您的连接是否支持传递文件描述符,请使用 UnixFileDescriptorPassing 能力设置 connectionCapabilities() 进行检查。如果标志未激活,您将无法调用具有 QDBusUnixFileDescriptor 作为参数的方法,甚至无法将此类型嵌入到变体中。您也无法接收包含该类型的通知。

注意,远程应用程序可能不支持 Unix 文件描述符传递。如果您将 D-Bus 连接到无法接收该类型的远程应用程序,您将收到错误回复。如果尝试发送包含 D-Bus 文件描述符的信号或从方法调用中返回一个文件描述符,消息将被静默丢弃。

即使该功能不可用,QDBusUnixFileDescriptor 仍然会继续运行,因此代码无需在编译时检查该功能的可用性。

在非 Unix 系统上,QDBusUnixFileDescriptor 总是会报告无效状态,并且 isSupported() 将返回 false。

另请参阅

ConnectionCapabilities connectionCapabilities()

__init__()#

创建一个没有包装文件描述符的 QDBusUnixFileDescriptor 实例。这相当于用无效的文件描述符(如 -1)构造对象。

__init__(other)
参数

otherQDBusUnixFileDescriptor

通过复制 other 创建 QDBusUnixFileDescriptor 对象。

__init__(fileDescriptor)
参数

fileDescriptor – int

通过复制 fileDescriptor 参数创建 QDBusUnixFileDescriptor 对象。原始文件描述符不会被修改,必须由用户关闭。

请注意,fileDescriptor() 返回的值将不同于传递的 fileDescriptor 参数。

如果 fileDescriptor 参数无效,isValid() 将返回 false,并且 fileDescriptor() 将返回 -1。

fileDescriptor()#
返回类型:

int

返回此 QDBusUnixFileDescriptor 对象包含的 Unix 文件描述符。无效的文件描述符用值 -1 表示。

请注意,此函数返回的文件描述符归 QDBusUnixFileDescriptor 对象所有,不得跨此对象的生存期存储。当此对象有效时使用它是可以的,但如果要长期使用,则应使用 Unix 的 dup(2)dup2(2)dup3(2) 函数来克隆文件描述符。

giveFileDescriptor(fileDescriptor)#
参数

fileDescriptor – int

static isSupported()#
返回类型:

bool

如果此平台支持 Unix 文件描述符,则返回 true。换句话说,这个函数返回 true,如果这是一个 Unix 平台。

请注意,即使此函数返回 falseQDBusUnixFileDescriptor 也会继续工作。唯一的区别是 QDBusUnixFileDescriptor 对象将始终处于 isValid() == false 状态,并且 fileDescriptor() 将始终返回 -1。该类不会消耗任何操作系统资源。

isValid()#
返回类型:

bool

如果此Unix文件描述符有效,则返回 true。有效的Unix文件描述符不是-1。

另请参阅

fileDescriptor()

setFileDescriptor(fileDescriptor)#
参数

fileDescriptor – int

将此 QDBusUnixFileDescriptor 对象持有的文件描述符设置为 fileDescriptor 的副本。原始文件描述符不会被修改,必须由用户关闭。

请注意,fileDescriptor() 返回的值将不同于传递的 fileDescriptor 参数。

如果 fileDescriptor 参数无效,isValid() 将返回 false,并且 fileDescriptor() 将返回 -1。

swap(other)#
参数

otherQDBusUnixFileDescriptor

other 交换文件描述符实例。此函数执行非常快,永远不会失败。

takeFileDescriptor()#
返回类型:

int