当前位置:  软件>C/C++软件

Linux桌面应用程序通讯 D-BUS

    来源:    发布时间:2015-01-30

    本文导语:  D-BUS是一个提供简单的应用程序互相通讯的途径的自由软件工程,它是做为freedesktop.org项目的一部分来开发的。 D-Bus 深深地受到了DCOP系統的影響而且將在KDE 4版的release中取代DCOP;他已經被實做在Qt4, GNOME,Windows以及 Maemo 行動...

D-BUS是一个提供简单的应用程序互相通讯的途径的自由软件工程,它是做为freedesktop.org项目的一部分来开发的。

D-Bus 深深地受到了DCOP系統的影響而且將在KDE 4版的release中取代DCOP;他已經被實做在Qt4, GNOME,Windows以及 Maemo 行動系統中。GNOME也逐渐的用它来取代了大部分的早期Bonobo机制。

D-Bus 允許程式在其上註冊以提供服務給其他的程式。同時他也提供客戶端程式查詢有哪些服務是可得的可能性。程式也可註冊以等待kernel之events比如說硬體的熱插拔。

D-Bus 被以daemon的方式實做。使用者可以執行好幾個D-Bus的實體,每個實體被稱為一個channel。通常系統中會有一個特權的channel稱之為 system channel,以及每個使用者擁有一個私有的實體。使用者需要私有的實體因為system channel將有存取的限制。

System channel主要的公用在於傳遞HAL的訊息給對這些訊息感興趣的processes。而私有的實體之功能在於提供程式間無限制的溝通。

D-BUS是一个设计目标为应用程序间通信的消息总线系统。它是个3层架构的进程间通信(IPC)系统,包括:

  • 函数库libdbus,用于两个应用程序呼叫联系和交互消息。
  • 一个基于libdbus构造的消息,总线守护进程可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。
  • 一系列基于特定应用程序框架的Wrapper库。

D-BUS为了两个特定情况而设计:

  • 同一个桌面会话中两个桌面应用程序的通信,可使得桌面会话作为整体集成在一起以解决进程生命周期的相关问题。
  • 桌面会话和操作系统的通信,这里操作系统一般而言包括内核和系统守护进程。

所有使用D-BUS的应用程序都包含一些对象,它们一般映射为GObject、QObject、C++对象、或者Python对象(也许不需要)。一个对象是一个实例而不是类型。当经由一个D-BUS连接受到一条消息时,该消息是被发往一个对象而不是整个应用程序。

为了允许消息能指定接受对象,还要提供引用对象的方法。在你偏爱的编程语言中,它也许叫做指针或者引用。但是上述所谓引用一般实现为与应用程序相关的内存地址,因此无法在应用程序之间传递。

为了解决这一问题,D-BUS为每个对象引入名字。这些名字看起来像是文件系统路径,例如一个对象可能叫做“/org/kde/kspread /sheets/3/cells/4/5”。易读的路径名是受鼓励的做法,但也允许使用诸如“/com/mycompany /c5yo817y0c1y1c5b”等,只要它可以为你的应用程序所用。

Namespacing的对象路径以开发者所有的域名开始(如/org/kde)以避免系统相同进程内不同代码模块互相干扰。


    
 
 

您可能感兴趣的文章:

  • 怎样开发在LINUX 上运行的应用程序,像WINDOWS桌面应用程序一样
  • linux开发的应用程序部署到其他linux的问题
  • 新手提问:在REDHAT LINUX 下开发应用程序,用什么工具好,除了 LINUX C以外
  • 菜鸟求助:Linux 应用程序后台启动后关闭窗口程序退出
  • 学了linux程序设计后能不能编写出应用程序
  • 请问能否在linux实现一个应用程序访问另外一个程序的内存数据?
  • 几个Linux应用程序开发的问题请教LINUX程序员!
  • linux 桌面应用程序和web应用程序编写常用的语言
  • Linux应用程序启动器 Kupfer
  • 使用linux内核+qt开发的应用程序需要开源吗
  • linux驱动程序是怎样通过内核和应用程序通信,还有是怎样和硬件通信,跪求求解,谢谢高手留言。
  • 求教:Linux下Java应用程序的重启脚本
  • [求助]如何在linux下运行windows应用程序????
  • 用SecureCRT或Putty 远程启动linux服务器上的一个应用程序,但是当我关掉SecureCRT的时候,应用程序也被关掉了,怎么能够做到我关闭客户
  • 在Linux应用程序模式下如何设置中断!!!
  • 如何获取应用程序的当前路径(Linux)
  • 怎样设置应用程序随linux启动而启动!
  • linux 驱动中想用 kobject_uevent 和应用程序通讯. 但不知如何用?
  • 哪位大哥知道?我怎样知道LINUX redhat 7.2下声音设备由哪个应用程序占用?
  • 嵌入式Linux换了内核后,运行应用程序显示Killed
  • linux桌面图标不见了,右击桌面也没有反映
  • 在linux下如何在桌面环境下切换到命令行模式,如何在命令行模式切换到桌面模式
  • 关于Linux桌面
  • linux启动后进不了桌面,急!
  • Linux下如何生成桌面图标?
  • Linux桌面环境 icewm
  • 请教一个linux远程桌面的问题
  • Linux 桌面环境 Trinity
  • 在Linux下开发桌面软件
  • Linux桌面环境 EDE
  • linux red hat 9.0 桌面异常....
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • WINDOWS 和 LINUX通讯
  • Linux语音通讯软件 Twinkle
  • LINUX下的JAVA串口通讯问题,如能解决,不胜感激
  • linux下怎样实现进程间的通讯,急用啊 !!!!!!!!!!!
  • 虚拟机上装了linux之后怎么跟windows通讯?
  • windows和linux进行socket通讯问题(高手请进!)
  • 你们在LINUX下面使用什么即时通讯联系工具?
  • 求Linux下开发拥有USB通讯功能的资料
  • linux下通讯进程启动后cpu占用100%
  • linux串口通讯问题
  • mysql iis7站长之家
  • 关于linux下多线程socket通讯的问题
  • 请教:linux下C++与Flash怎么通讯
  • 请问:linux 下 C语言编程 , 如何将 串口 由 全双工 变化为 半双工 通讯 方式?
  • linux 与 windows 之间 socket 通讯问题
  • 请教一个linux串口通讯问题?
  • 急求linux串口通讯的例子.
  • 高分求救!linux中两个应用程序之间可以用基于system v的消息队列进行通讯吗?
  • 宿主机与虚拟机Linux桥接通讯,FTP问题
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3