选择system bus还是session bus?

时间:2022-12-30 16:10:34

不同的系统在使用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上面挂链接

时,需要注意环境变量一致的问题,否则挂接上去了,也不能实现进程之间的正常通信。

http://blog.chinaunix.net/uid-21091200-id-1830654.html