如何从控制台创建 dbus 服务?

Posted

技术标签:

【中文标题】如何从控制台创建 dbus 服务?【英文标题】:How to create dbus service from console? 【发布时间】:2012-04-18 18:35:14 【问题描述】:

使用诸如 dbus-send 或 dbus-monitor 之类的工具,有或多或少直接的方式来发出或侦听现有 DBus 服务的信号。

如何从 shell 注册服务和对象?期待类似的东西

1> dbus-service --session org.example.Test /Test
  2> qdbus org.example.Test /Test org.example.Test.Call qqq
1> qqq
  2> qdbus org.example.Test /Test org.example.Test.Call www
1> www

或喜欢

1> dbus-service --argc=2 --session org.example.Test /Test -- /usr/bin/printf "%s Q %s\n"
  2> qdbus org.example.Test /Test org.example.Test.Call qqq ttw
1> qqq Q ttw
  2> qdbus org.example.Test /Test org.example.Test.Call www 111
1> www Q 111

【问题讨论】:

使用 D-Bus 的简单方法太多了,我不觉得在 shell 中做这一切有用。 【参考方案1】:

自己实现:http://vi-server.org/pub/dbus-shell-service.pl 以this question 为例。

Usage: dbus-shell-service.pl service_name command_line_arguments...
Example:
  dbus-shell-service.pl org.example.Test /usr/bin/printf '%s Q %s\n' &
  qdbus org.example.Test / org.vi_server.DbusShellService.Call2 s1 s2
  s1 Q s2

【讨论】:

以上是关于如何从控制台创建 dbus 服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个进程/程序将对象添加到 DBus 服务

使用 DBus 控制 Gnome 音量

如何创建 DBUS 服务

通过 Python 的 dbus 模块控制 CentOS 中的 firewalld?

从python访问iwd dbus接口

Dbus——故障控制