- class QDBusUnixFileDescriptor#
QDBusUnixFileDescriptor
类包含一个 Unix 文件描述符。 更多…摘要#
方法#
def
__init__()
def
fileDescriptor()
def
isValid()
定义
swap()
静态函数#
注意事项
此文档中可能包含自动从 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)
- 参数
other –
QDBusUnixFileDescriptor
通过复制
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 平台。请注意,即使此函数返回
false
,QDBusUnixFileDescriptor
也会继续工作。唯一的区别是QDBusUnixFileDescriptor
对象将始终处于isValid()
== false 状态,并且fileDescriptor()
将始终返回 -1。该类不会消耗任何操作系统资源。- isValid()#
- 返回类型:
bool
如果此Unix文件描述符有效,则返回
true
。有效的Unix文件描述符不是-1。另请参阅
- setFileDescriptor(fileDescriptor)#
- 参数
fileDescriptor – int
将此
QDBusUnixFileDescriptor
对象持有的文件描述符设置为fileDescriptor
的副本。原始文件描述符不会被修改,必须由用户关闭。请注意,
fileDescriptor()
返回的值将不同于传递的fileDescriptor
参数。如果
fileDescriptor
参数无效,isValid()
将返回 false,并且fileDescriptor()
将返回 -1。- swap(other)#
- 参数
other –
QDBusUnixFileDescriptor
与
other
交换文件描述符实例。此函数执行非常快,永远不会失败。- takeFileDescriptor()#
- 返回类型:
int