dbus --- dbus-send、dbus-monitor工具、标准接口
dbus-send
功能
- 调用指定程序的方法
- 向指定程序发送信号
dbus-send
的基本语法
dbus-send --system|--session --dest=destination --type=method_call --print-reply /path/to/object interface.method [arg1 arg2 ...]
--system
或--session
:指定使用系统总线还是会话总线。系统总线用于系统级服务,而会话总线用于用户会话中的服务。--dest=destination
:指定目标服务的名称,也称well-known Name--type=method_call
:指定消息类型为方法调用;signal表示发送信号--print-reply
:如果服务响应了消息,打印响应消息;也可以写--print-reply=literal,,literal会把所有的标点和转义符号去掉/path/to/object
:目标对象的路径。interface.method
:要调用的接口.方法。[arg1 arg2 ...]
:传递给方法的参数(可选)。
示例
使用dbus-send
控制屏幕保护程序
假设你想使用dbus-send
来锁定屏幕(这通常通过调用屏幕保护程序的服务来完成)。你可以使用以下命令:
dbus-send --session --print-reply --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
返回
method return time=1720419947.196079 sender=:1.85 -> destination=:1.112 serial=28 reply_serial=2
标准接口
标准接口可以在DBus-Spec中找到,可以使用dbus提供的标准接口进行迭代查询,查询到每个的服务名--->obj路径--->每个方法的输入输出参数。
查询系统总线所有服务名称
dbus-send --system --print-reply --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ListNames
返回
method return time=1689984075.048033 sender=org.freedesktop.DBus -> destination=:1.3 serial=3 reply_serial=2
array [
string "org.freedesktop.DBus"
string ":1.3"
string ":1.0"
string "org.bluez"
]
查询服务 org.bluez 的所有对象的所有接口及其属性值(方法和信号没列出)
dbus-send --system --print-reply --type=method_call --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects
查询对象 org/bluez 的所有接口的方法、属性和信号的信息
dbus-send --system --print-reply --type=method_call --dest=org.bluez /org/bluez org.freedesktop.DBus.Introspectable.Introspect
dbus-monitor
基本语法
dbus-monitor
[--system | --session | --address ADDRESS]
[--profile | --monitor | --pcap | --binary] // 设置输出格式
[watch expressions]
监视接口 org.bluez.Adapter1 的方法调用
root@rk3308h-buildroot:/# dbus-monitor --profile --system "type='method_call',interface='org.bluez.Adapter1'"
#type timestamp serial sender destination path interface member # in_reply_to sig 1689986806.605417 2 org.freedesktop.DBus :1.16 /org/freedesktop/DBus org.freedesktop.DBus NameAcquired sig 1689986806.605524 4 org.freedesktop.DBus :1.16 /org/freedesktop/DBus org.freedesktop.DBus NameLost mc 1689986810.994514 2 :1.17 org.bluez /org/bluez/hci0 org.bluez.Adapter1 StartDiscovery
标签:
bluez/dbus
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2023-07-16 linux 内存管理 --- 用户空间 malloc 内存申请原理
2017-07-16 MAC地址的介绍(单播、广播、组播、数据收发)
2017-07-16 OSI 七层模型和 TCP/IP 四层模型 及 相关网络协议