D-bus 是否需要 UI 或者它也可以在命令行工具中使用?
Does the D-bus need a UI or it can also be used in command line tools?
在 linux 中,D-bus 似乎是一种非常方便的进程通信方式。我的问题是它是否需要 UI/x11 之前启动,或者它也可以在没有 UI/x11 的命令行工具中使用?
为了工作,D-Bus 唯一需要的是 D-Bus 服务器守护程序本身。这是通过 dbus-launch
调用的,如果不使用 X init 系统,它可以集成到 shell 启动脚本中。此外,应用程序可以尝试自己执行 dbus-launch
,以便尝试使用在登录时创建的会话总线或创建供应用程序自己使用的会话总线。自然地,第一个选项(或第二个选项的第一个结果)是首选,因为它总体上使用的资源更少。
不,不是。系统 D-Bus(作为 dbus --system
启动)在 X 服务器之前启动。
ldd
对流程的进一步检查未显示对 X 有任何依赖性:
$ ldd /usr/bin/dbus-daemon
linux-vdso.so.1 (0x00007fff669ff000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f27cd14e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f27ccefc000)
librt.so.1 => /lib64/librt.so.1 (0x00007f27cccf4000)
libc.so.6 => /lib64/libc.so.6 (0x00007f27cc92b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f27cd378000)
在 linux 中,D-bus 似乎是一种非常方便的进程通信方式。我的问题是它是否需要 UI/x11 之前启动,或者它也可以在没有 UI/x11 的命令行工具中使用?
为了工作,D-Bus 唯一需要的是 D-Bus 服务器守护程序本身。这是通过 dbus-launch
调用的,如果不使用 X init 系统,它可以集成到 shell 启动脚本中。此外,应用程序可以尝试自己执行 dbus-launch
,以便尝试使用在登录时创建的会话总线或创建供应用程序自己使用的会话总线。自然地,第一个选项(或第二个选项的第一个结果)是首选,因为它总体上使用的资源更少。
不,不是。系统 D-Bus(作为 dbus --system
启动)在 X 服务器之前启动。
ldd
对流程的进一步检查未显示对 X 有任何依赖性:
$ ldd /usr/bin/dbus-daemon
linux-vdso.so.1 (0x00007fff669ff000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f27cd14e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f27ccefc000)
librt.so.1 => /lib64/librt.so.1 (0x00007f27cccf4000)
libc.so.6 => /lib64/libc.so.6 (0x00007f27cc92b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f27cd378000)