D-bus 需要 UI 还是也可以在命令行工具中使用?

Posted

技术标签:

【中文标题】D-bus 需要 UI 还是也可以在命令行工具中使用?【英文标题】:Does the D-bus need a UI or it can also be used in command line tools? 【发布时间】:2016-05-03 14:37:37 【问题描述】:

似乎 D-bus 是一种在 linux 中通信进程的非常方便的方式。我的问题是它是否需要之前启动 UI/x11 或者它也可以在没有 UI/x11 的命令行工具中使用?

【问题讨论】:

【参考方案1】:

为了工作,D-Bus 唯一需要的是 D-Bus 服务器守护进程本身。这是通过dbus-launch 调用的,如果不使用X init 系统,它可以集成到shell 启动脚本中。此外,应用程序可以尝试自己执行dbus-launch,以便尝试使用登录时创建的会话总线或创建会话总线供应用程序自己使用。自然首选第一个选项(或第二个选项的第一个结果),因为它总体上会使用更少的资源。

【讨论】:

【参考方案2】:

不,它没有。系统 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)

【讨论】:

以上是关于D-bus 需要 UI 还是也可以在命令行工具中使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Material UI 中使 TextField 无效

Java CLI UI 设计:框架还是库? [关闭]

如何使用 React JS 在 Material UI 中使整个 Card 组件可点击?

用 pygobject 编写 D-Bus 服务?

在 Java 中通过 D-Bus MPRIS 访问 Clementine 实例

tshark、tcpdump命令行分析工具对比(1)