dbus

DBus学习笔记

我们两清 提交于 2019-12-06 07:25:44
http://dotnet.cnblogs.com/page/76759/?page=1 作者:Jerry_Chen 来源:www.meegoq.com 时间:2010-10-12 阅读:513 次 原文链接 [收藏] 整页浏览 摘要: DBus作为一个轻量级的IPC被越来越多的平台接受,在MeeGo中DBus也是主要的进程间通信方式,这个笔记将从基本概念开始记录笔者学习DBus的过程 [1] DBus学习笔记一:DBus学习的一些参考资料 [2] DBus学习笔记二:什么是DBus? [3] DBus学习笔记三:DBus的一些基本概念 一些基本概念的解释和翻译: http://blog.mcuol.com/User/AT91RM9200/Article/12816_1.htm http://www.cnblogs.com/wzh206/archive/2010/05/13/1734901.html 一个完整的DBus学习教程(强烈推荐,写得相当的全): http://blog.csdn.net/fmddlmyy/archive/2008/12/23/3585730.aspx 两个DBus的完整示例,相当有参考价值 http://blog.chinaunix.net/u1/58649/showart_462468.html http://hi.baidu.com

和菜鸟一起学linux之DBUS基础学习记录

旧街凉风 提交于 2019-12-06 07:24:49
D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统,包括: 1、函数库libdbus ,用于两个应用程序互相联系和交互消息。 2、一个基于libdbus构造的消息总线守护进程,可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。 3、基于特定应用程序框架的封装库或捆绑(wrapper libraries or bindings )。例如,libdbus-glib和libdbus-qt,还有绑定在其他语言,例如Python的。大多数开发者都是使用这些封装库的API,因为它们简化了D-Bus编程细节。libdbus被有意设计成为更高层次绑定的底层后端(low-levelbackend )。大部分libdbus的 API仅仅是为了用来实现绑定。 总线   在D-Bus中,“bus”是核心的概念,它是一个通道:不同的程序可以通过这个通道做些操作,比如方法调用、发送信号和监听特定的信号。在一台机器上总线守护有多个实例(instance)。这些总线之间都是相互独立的。 一个持久的系统总线(system bus): 它在引导时就会启动。这个总线由操作系统和后台进程使用,安全性非常好,以使得任意的应用程序不能欺骗系统事件。它是桌面会话和操作系统的通信,这里操作系统一般而言包括内核和系统守护进程

Dbus-glib使用心得

醉酒当歌 提交于 2019-12-06 07:20:51
Dbus-glib使用心得 一、背景介绍 从安全的角度考虑,广泛的使用DBUS进行进程间通讯。 1.优点: DBUS总线分为系统总线与会话总线两类,两者之前不能互相通信,所以任何应用程序不能欺骗系统事件,安全性很好。 2.缺点 l 直接使用Dbus标准接口调用很繁琐,各服务之间各写一套,不易维护也容易出错。 l 接受方法调用端、消息接收端等程序需要非阻塞式(阻塞式的无法多线程DBUS通讯)判断是否接收到DBUS信息,形如: W hile(1) { dbus_connection_read_write (); msg = dbus_connection_borrow_message(conn); if (NULL == msg) { usleep(xxx); continue; } … } 如上所示,多个服务同时运行的情况下,会占用大量CPU时间片,之前就有测试报告应用程序压力运行单一操作的情况下,应用程序会由快跑慢。 因此需要一个稳定可靠的DBUS调用封装,上层统一该封装接口进行DBUS通讯。 二、 D bus-glib介绍 Dbus-glib是GNU标准库,在Dbus接口上封装,方便上层服务与应用更好的使用。其形如一个DBUS代理服务器,由它进行所有DBUS消息的遍历与转发,服务端与消息发送端只需要向DBUS deamon申请注册唯一的DBUS name 、绑定GOBJECT后

认识dbus的基本概念

人盡茶涼 提交于 2019-12-06 07:20:33
一. dbus 的认识 dbus是一用于进程间通信的一种设施,但不是简单的1-1关系的进程间通信,如果只是这些已经有很多成熟的技术可以采用:在windows下从简单的com、管道、内存共享到复杂的corba。dbus则更是更轻量级的ipc,不仅可以实现1-1,还可以实现1-n关系的ipc。它的使用面向对象化,就像使用面向对象语言进行ipc开发。引入object,interface等概念。 二. 下从dbus的代码开始认识他的概念。 1.bus,总线,假如由一个集线器和几台机器组成的网络是一个总线式网络,我们不从网络拓补那些理论上看这个网络,从物理上看就是总线网络:集线器是总线,机器都连到这根总线上就可以communtion了。dbus就是这样一个网络,bus相当于集线器,而在dbus系统里实际扮演这一角色的是dbus-daemon。 2. dbus connection. 一个connection就代表一个到bus上的连接,在集线器网络里,各个endpoint要通信,都要通过网线连接到集线器。dbus系统里,如果一个进程要与其他进程通信,也要通过这个dbus connection连接到dbus-daemon,不过这是一个tcp连接。我们来看下dbus获取一个连接的代码: if (!init_connections_unlocked ()) { _DBUS_UNLOCK (bus);

linux之DBUS基础学习记录

99封情书 提交于 2019-12-06 07:20:19
D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统,包括: 1、函数库libdbus ,用于两个应用程序互相联系和交互消息。 2、一个基于libdbus构造的消息总线守护进程,可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。 3、基于特定应用程序框架的封装库或捆绑(wrapper libraries or bindings )。例如,libdbus-glib和libdbus-qt,还有绑定在其他语言,例如Python的。大多数开发者都是使用这些封装库的API,因为它们简化了D-Bus编程细节。libdbus被有意设计成为更高层次绑定的底层后端(low-levelbackend )。大部分libdbus的 API仅仅是为了用来实现绑定。 总线   在D-Bus中,“bus”是核心的概念,它是一个通道:不同的程序可以通过这个通道做些操作,比如方法调用、发送信号和监听特定的信号。在一台机器上总线守护有多个实例(instance)。这些总线之间都是相互独立的。 一个持久的系统总线(system bus): 它在引导时就会启动。这个总线由操作系统和后台进程使用,安全性非常好,以使得任意的应用程序不能欺骗系统事件。它是桌面会话和操作系统的通信,这里操作系统一般而言包括内核和系统守护进程

dbus介绍与例子

本小妞迷上赌 提交于 2019-12-06 07:19:45
   D-bus是一个进程间通信的工具,优点不在这里赘述。   网上很多关于dbus的帖子都是基于dbus-glib或者QT D-bus的,直接使用dbus的教程比较少。也难怪,因为连D-bus的官网都说:" If you use this low-level API directly, you're signing up for some pain. "   但实际上,直接使用D-bus也没有想象中难。本文将对直接使用D-bus做一个介绍。 本文参考了其他一些网站的帖子或者介绍 官网:http://www.freedesktop.org/wiki/Software/dbus/ 经典例子:http://www.matthew.ath.cx/articles/dbus 不错的帖子:http://blog.csdn.net/flowingflying/article/details/4527634 一、概念介绍   这里虽然说是概念介绍,其实只是我个人对D-bus的一个理解,不一定完整准确。 1.首先,D-bus可以分成三部分来看, (1)dbus-daemon,一个dbus的后台守护程序,用于多个应用之间消息的转发; (2)libdbus.so,dbus的功能接口,当你的程序需要使用dbus时,其实就是调用libdbus.so里面的接口; (3)高层封装,如dbus-glib和QT

DBus学习资料

筅森魡賤 提交于 2019-12-06 07:19:30
网上搜集的一些关于dbus学习的资料。尤其是“一个完整的DBus学习教程”这份资料非常有借鉴意义。另外DBus官方网站中dbus-tutorial这篇文章也非常值得学习。还有“ Training material for Glib wrappers from maemo ”这篇也讲的很明白 一些基本概念的解释和翻译: http://blog.mcuol.com/User/AT91RM9200/Article/12816_1.htm http://www.cnblogs.com/wzh206/archive/2010/05/13/1734901.html 一个完整的DBus学习教程(强烈推荐,写得相当的全): http://blog.csdn.net/fmddlmyy/archive/2008/12/23/3585730.aspx 两个DBus的完整示例,相当有参考价值 http://blog.chinaunix.net/u1/58649/showart_462468.html http://hi.baidu.com/zengzhaonong/blog/item/670b98d6e63ae42c07088bae.html DBus官方网站,最原滋原味的DBus学习内容 http://www.freedesktop.org/wiki/Software/dbus http://dbus

dbus-glib 详解

狂风中的少年 提交于 2019-12-06 07:18:48
Dbus-glib使用方法说明 一、背景介绍 Phoenix平台从安全的角度考虑,广泛的使用DBUS进行进程间通讯。 1.优点: DBUS总线分为系统总线与会话总线两类,两者之前不能互相通信,所以任何应用程序不能欺骗系统事件,安全性很好。 2.缺点 l 直接使用Dbus标准接口调用很繁琐,且之前Phoenix平台没有统一的DBUS接口封装,各服务之间各写一套,不易维护也容易出错。 l 接受方法调用端、消息接收端等程序需要非阻塞式(阻塞式的无法多线程DBUS通讯)判断是否接收到DBUS信息,形如: While(1) { dbus_connection_read_write(); msg =dbus_connection_borrow_message(conn); if (NULL == msg) { usleep(xxx); continue; } … } 如上所示,多个服务同时运行的情况下,会占用大量CPU时间片,之前就有测试报告应用程序压力运行单一操作的情况下,应用程序会由快跑慢。 因此需要一个稳定可靠的DBUS调用封装,上层统一该封装接口进行DBUS通讯。 二、Dbus-glib介绍 Dbus-glib是GNU标准库,在Dbus接口上封装,方便上层服务与应用更好的使用。其形如一个DBUS代理服务器,由它进行所有DBUS消息的遍历与转发

dbus

≯℡__Kan透↙ 提交于 2019-12-06 07:18:28
D-Bus 也是一个用于进程间通信的框架。 简单介绍一下如何编写一个helloworld通信例子。 0. 下载源码 http://www.freedesktop.org/wiki/Software/dbus#Download . 1. ./configure 这时候可能会出现问题: configure: error: Could not find expat.h, check config.log for failed attempts 可以通过 sudo apt-get install libexpat1-dev 来解决 2. make 3. make install 其中 可能遇到的编译问题 1. fatal error: dbus/dbus.h: No such file or directory 把 /usr/local/include/dbus-1.0/dbus/拷贝到/usr/include/dbus 2. fatal error: dbus/dbus-arch-deps.h: No such file or directory 把 /usr/local/lib/dbus-1.0/include/dbus/dbus-arch-deps.h拷贝到/usr/include/dbus 3. 链接错误 collect2: ld returned 1 exit status

如何测试 DBUS Daemon

本小妞迷上赌 提交于 2019-12-06 07:18:13
方法如下: ./dbus-daemon --print-address --config-file=/home/charles/code/dbus/cmake/cmake/bus/session.conf unix:abstract=/tmp/dbus-ZfKHkBvsWm,guid=6fcb847152517d1d7a75bafa5474bf74 org.freedesktop.DBus.Error.NotSupported: cannot change fd limit on this platform 记住打印出来的地址: unix:abstract=/tmp/dbus-ZfKHkBvsWm,guid=6fcb847152517d1d7a75bafa5474bf74 然后,启动 d-feet, 选择 "Connect to other bus", 输入上面的地址,就建立了一个connection. 然后,执行: $ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ZfKHkBvsWm ./dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID