不同的系统在使用daemon dbus时,有两个选择,可以选择system bus,
简单些;也可以使用session bus; 手机不象PC那样有多用户,手机一般就单用户,
所以手机系统就一个session, 所以,用system bus和session bus来讲区别不大。
如何用session bus:
test@test-desktop:~$ dbus-launch --sh-syntax --exit-with-session
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-4LByHVXzpZ,guid=6c8c42131a483732eca9a90048383b44';
export DBUS_SESSION_BUS_ADDRESS;
DBUS_SESSION_BUS_PID=6836;
test@test-desktop:~$
这样做不行,需要把环境变量设置一下
test@test-desktop:~$ dbus-launch --sh-syntax --exit-with-session >>env.sh
test@test-desktop:~$ source ./env.sh
然后另外开一个terminal, 直接运行source ./env.sh就可以了,这样两个terminal中的session dbus的环境设置是一样的。
如果用system bus:
直接运行你系统里的dbus-daemon的命令:
test@test-desktop:~$ dbus-daemon --system
Failed to start message bus: The pid file "/var/run/dbus/pid" exists, if the message bus is not running, remove this file
test@test-desktop:~$
一般会出现上面的错误:
可以这样处理:
test@test-desktop:~$ rm -rf "/var/run/dbus/pid
test@test-desktop:~$ dbus-daemon --system
这样系统中的system bus就可以用了。
根据各个系统的不同,可能所有的程序都挂载到system bus上,也可能都挂载到session bus上面,
向maemo平台就是使用的session bus. 从上面的启动daemon bus的过程中可以看出,用system bus简单些;
用session bus配置就麻烦些:各个不同的程序可能是运行在不同的进程的,这样往session bus上面挂链接
时,需要注意环境变量一致的问题,否则挂接上去了,也不能实现进程之间的正常通信。