答:目前 SylixOS Qt 并不支持 DBus,因为 DBus 目前为 linux 独有通信方式。后续 SylixOSQt 可能会对 DBus 进行适配。 对于进程间通信,SylixOS 也有其支持的 IPC 机制。可以根据应用开发手册进行了解与使用。
3. 原理概述
3.1 Linux 下的 DBus
DBus 是一种高级的进程间通信机制,它由 freedesktop.org 项目提供,使用 GPL 许可证发行。DBus 最主要的用途是在 Linux 桌面环境为进程提供通信,同时能将 Linux 桌面环境和 Linux 内核事件作为消息传递到进程。注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。目前,DBus 已被大多数 Linux 发行版所采用,开发者可使用 DBus 实现各种复杂的进程间通信任务。
DBus 是实质上一个适用于桌面应用的进程间的通讯机制,即所谓的 IPC 机制。适合在同一台机器,不适合于 INTERNET 的 IPC 机制。DBus 不是一个为所有可能的应用的通用的 IPC 机制,不支持其他 IPC 机制的很多特性。DBus 提供了一个低时延、低消耗的 IPC 通讯,因为它采用了二进制的数据交换协议,不需要转换成文本化的数据进行交换,DBus 提供了面向多重对象系统的包装,可以在原有的面向对象的应用框架下使用 DBus,不需要学习新的概念和规范等。
DBus 是支持一对一和多对多的对等通讯,在一对一的直接通讯时,两个应用程序连接在一起,这是最简单的工作方式。在多对多的通讯时,这就需要一个叫 DBus 后台的角色去分转,一个应用程序发消息给另外一个应用程序,先到达后台,再让后台将信息发送到目的应用程序。在这里 DBus 后台就充当着一个路由器的角色。
同时DBus包含了系统更新通知,如插入新设备通知、新软件安装通知等,和桌面应用的交互协作能力,可以作为文件系统监控器和配置服务器。
3.2 SylixOS 下的 IPC 机制
SylixOS 应用开发同样有它支持的 IPC 机制,进程是计算机系统分配资源的最小单位,每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,需要进程间通信机制。
常见的进程间通信方式有:管道、命名消息队列、命名信号量、共享内存、信号等。
同时 SylixOS 也支持 socket 通信方式,SOCKET 是用于同一台主机的进程间通讯(IPC)。它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序列号应答等。只是将应用层数据从一个进程拷贝到另一个进程。常用的 socket 类型有三种:流式(SOCK_STREAM)、数据报式(SOCK_DGRAM)以及原始式(SOCK_RAW)。