DBus 介紹 dbus是freedesktop下開(kāi)源的Linux IPC通信機(jī)制,本身Linux
的IPC通信機(jī)制包括,管道(fifo),共享內(nèi)存,信號(hào)量,消息隊(duì)列,Socket等。
像現(xiàn)在流行的moblin平臺(tái)就使用了DBUS通信,還有我最近看的bluez 4 也是通過(guò)DBUS來(lái)交互的。 1. 函數(shù)庫(kù)libdbus,用于兩個(gè)應(yīng)用程序呼叫聯(lián)系和交互消息。 2. Message bus daemon,總線守護(hù)進(jìn)程可同時(shí)與多個(gè)應(yīng)用程序相連,并能把來(lái)自一個(gè)應(yīng)用程序的消息路由到0或者多個(gè)其他程序。 3. 一系列基于特定應(yīng)用程序框架的Wrapper庫(kù)。 比如libdbus-glib, libdbus-python. 我前段時(shí)間就是用Python寫(xiě)程序與dbus-daemon通信,所以就需要libdbus-python,后來(lái)又用c寫(xiě)程序,又裝了libdus-glib。實(shí)質(zhì)上在dbus主頁(yè)上(http://www./wiki/Software/dbus) 提供了很多Wrapper庫(kù), for QT4, JAVA, Perl, C++, Pascal, QT3, .NET, Ruby等等。這個(gè)Wrapper庫(kù)呢其實(shí)就是對(duì)dbus下層調(diào)用做了封裝,給上層暴露一個(gè)友好的接口。dbus的底層其實(shí)也是通過(guò)socket通信的 圖 1-1 我再給一張bluez的例子讓大家更理解dbus; 有四個(gè)應(yīng)用想與bluz的damon通信,bluez注冊(cè)到dbus中,其它的應(yīng)用只需要向dbus要bluez的數(shù)據(jù), dbus負(fù)責(zé)再和bluez溝通了,但是bluez一定要把接口告訴其它應(yīng)用。 |
|