PySide6.QtDBus.QDBusUnix文件描述符¶
- class QDBusUnixFileDescriptor¶
QDBusUnixFileDescriptor类持有一个 Unix 文件描述符。更多…概要¶
方法¶
def
__init__()def
fileDescriptor()def
isValid()def
swap()
静态函数¶
def
isSupported()
注意
本文档可能包含从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。另请参阅
ConnectionCapabilitiesconnectionCapabilities()- __init__()¶
构造一个没有包装文件描述符的
QDBusUnixFileDescriptor。这相当于用一个无效的文件描述符(如-1)构造对象。- __init__(other)
- Parameters:
通过复制
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。请注意,即使此函数返回
false,QDBusUnixFileDescriptor仍会继续运行。唯一的区别是QDBusUnixFileDescriptor对象将始终处于isValid()== false状态,并且fileDescriptor()将始终返回-1。该类不会消耗任何操作系统资源。- isValid()¶
- Return type:
布尔
如果这个Unix文件描述符有效,则返回
true。一个有效的Unix文件描述符不是-1。另请参阅
- setFileDescriptor(fileDescriptor)¶
- Parameters:
fileDescriptor – int
将此
QDBusUnixFileDescriptor对象持有的文件描述符设置为fileDescriptor的副本。原始文件描述符不会被修改,必须由用户关闭。请注意,
fileDescriptor()返回的值将与传递的fileDescriptor参数不同。如果
fileDescriptor参数无效,isValid()将返回 false,fileDescriptor()将返回 -1。- swap(other)¶
- Parameters:
将此文件描述符实例与
other交换。此函数非常快且永远不会失败。- takeFileDescriptor()¶
- Return type:
整数