- 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。另请参阅
ConnectionCapabilitiesconnectionCapabilities()- __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