PySide6.QtDBus.QDBusUnix文件描述符

class QDBusUnixFileDescriptor

QDBusUnixFileDescriptor 类持有一个 Unix 文件描述符。更多

概要

方法

静态函数

注意

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

详细描述

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

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

QDBusUnixFileDescriptor 不会获取文件描述符的所有权。相反,它将使用 Unix 系统调用 dup(2) 来复制文件描述符。这个文件描述符属于 QDBusUnixFileDescriptor 对象,用户不应存储或关闭它。相反,如果你需要,你应该自己复制一份。

可用性

Unix文件描述符传递并非在所有D-Bus连接中都可用。此功能在Unix系统上的D-Bus库和总线守护程序版本1.4及以上版本中存在。如果在编译时和运行时发现此类版本,Qt D-Bus会自动启用该功能。

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

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

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

在非Unix系统上,QDBusUnixFileDescriptor 将始终报告无效状态,且 isSupported() 将返回 false。

另请参阅

ConnectionCapabilities connectionCapabilities()

__init__()

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

__init__(other)
Parameters:

其他QDBusUnixFileDescriptor

通过复制 other 来构造一个 QDBusUnixFileDescriptor 对象。

__init__(fileDescriptor)
Parameters:

fileDescriptor – int

通过复制fileDescriptor参数来构造一个QDBusUnixFileDescriptor对象。原始的文件描述符不会被修改,必须由用户关闭。

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

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

fileDescriptor()
Return type:

整数

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

请注意,此函数返回的文件描述符由QDBusUnixFileDescriptor对象拥有,并且不能在此对象的生命周期之外存储。在此对象有效时使用它是可以的,但如果想要更长时间地存储它,应该使用Unix的dup(2)dup2(2)dup3(2)函数克隆文件描述符。

giveFileDescriptor(fileDescriptor)
Parameters:

fileDescriptor – int

static isSupported()
Return type:

布尔

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

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

isValid()
Return type:

布尔

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

另请参阅

fileDescriptor()

setFileDescriptor(fileDescriptor)
Parameters:

fileDescriptor – int

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

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

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

swap(other)
Parameters:

其他QDBusUnixFileDescriptor

将此文件描述符实例与 other 交换。此函数非常快且永远不会失败。

takeFileDescriptor()
Return type:

整数