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。另请参阅
ConnectionCapabilities
connectionCapabilities()
- __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:
整数