Qt 桌面级应用进程通信

Qt 桌面级应用进程通信

1. 适用范围

      本文档适用于对 Qt 中 DBus 使用有需求或者 Qt 间应用通信需求的开发工程师。

2. 问题描述

      问:SylixOSQt 是否支持 DBus 桌面级应用进程通信?是否还有其他通信方式?
      答:目前 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)。


    • Related Articles

    • SylixOS IPC通信出现符号表找不到的解决方式

      Q:SylixOS IPC通信出现符号表找不到的解决方式 首先查看 xinput.ko(input 模块)、xsiipc.ko(IPC 模块)内核自带的驱动模块文件是否加载,这两个模块在部署 Qt 库的时候会同 startup.sh 等脚本一同部署至目标机,并会写入到 startup.sh 脚本自动加载(自动加载需要重启系统); 若未部署过 Qt 库,可自行加载 /lib/modules 目录下的 两个模块。重新运行程序即可正常进行 IPC通信。 详见《SylixOS应用程序开发手册》 ...
    • SylixOS 上的 Qt 是什么版本?

      Q: SylixOS 的 Qt 是什么版本的? 目前 SylixOS 上支持的 Qt 版本是 Qt:4.8.7 和 Qt:5.12
    • Qt 应用程序移植到 SylixOS

      Q:Qt 应用程序移植到 SylixOS 需要多大的工作量? SylixOS 对 Qt 接口的支持是全功能支持的,只需要在SylixOS系统下重新编译就可以了,基本没有工作量。
    • QT 程序启动加载流程简介

      1. QT应用程序启动加载流程简介 1.1 QWS与QPA启动客户端程序区别 1.1.1 QWS(Qt Window System)介绍 QWS(Qt Windows System)是QT自行开发的窗口系统,体系结构类似X Windows的C/S结构。QWS Server在物理设备上显示,QWS Client实现界面,两者通过socket进行彼此的通讯。在很多嵌入式系统里,QT程序基本上都是用QWS来实现,这样保证程序的可移植性。 在运行QT程序时添加-qws参数,表示这个程序是QWS ...
    • Qt for Embedded Linux data directory has incorrect permissions

      Q:SylixOS 下运行 QT 程序出现提示 tmp 下目录无权限导致运行失败。 设备在更换镜像及文件系统后,启动正常,调试串口提示 QT 程序启动运行错误,提示信息如下: Qt for Embedded Linux data directory has incorrect permissions: /tmp/qtembedded-1 Qt for Embedded Linux data directory has incorrect permissions: ...