分享

DBus 介绍

 guitarhua 2012-07-13

DBus 介绍

      dbus是freedesktop下开源的Linux IPC通信机制,本身Linux 的IPC通信机制包括,管道(fifo),共享内存,信号量,消息队列,Socket等。 像现在流行的moblin平台就使用了DBUS通信,还有我最近看的bluez 4 也是通过DBUS来交互的。
 
      它是个3层架构的进程间通信系统,包括:   

            1.   函数库libdbus,用于两个应用程序呼叫联系和交互消息。

            2.   Message bus daemon,总线守护进程可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。

            3.   一系列基于特定应用程序框架的Wrapper库。 比如libdbus-glib, libdbus-python.

      参看图1-1,  Bus Daemon Process就是运行在linux的daemon(dbus-daemon, 用户可以在/etc/init.d/dbus 操作,stop, start等等),  dbus-daemon运行时会调用libdus的库。 在Application Process1里面就是应用层的东西了,应用程序调用特定的应用程序框架的Wrapper库与dbus-daemon进行通信。

      我前段时间就是用Python写程序与dbus-daemon通信,所以就需要libdbus-python,后来又用c写程序,又装了libdus-glib。实质上在dbus主页上(http://www./wiki/Software/dbus) 提供了很多Wrapper库, for QT4, JAVA, Perl, C++, Pascal, QT3, .NET, Ruby等等。这个Wrapper库呢其实就是对dbus下层调用做了封装,给上层暴露一个友好的接口。dbus的底层其实也是通过socket通信的

                                                                         图 1-1    
      我再给一张bluez的例子让大家更理解dbus; 有四个应用想与bluz的damon通信,bluez注册到dbus中,其它的应用只需要向dbus要bluez的数据,
dbus负责再和bluez沟通了,但是bluez一定要把接口告诉其它应用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多