busctl 列表中未显示 zbus 连接
zbus connection not displayed in busctl list
我正在使用 zbus crate 使服务器能够从 dbus 获取事件。
它运行良好,我的代码(与文档中的 example 基本相同)能够接收事件,所以没问题。
我使用 busctl
发送事件,如示例所示:
busctl --user call org.zbus.MyGreeter /org/zbus/MyGreeter org.zbus.MyGreeter1 SayHello s "Maria"
而且我的代码能够很好地接收带有参数的事件。
问题是我遇到了 some issues with udev,在尝试修复它时我发现了一些奇怪的事情:
- 如果我向另一个用户发送事件,它会失败并显示
Call failed: the name org.zbus.MyGreeter was not provided by any .service files
,而我的程序是 运行
- 当我执行
busctl list --acquired
时,我在结果中看不到 org.zbus.MyGreeter
我的问题是:我的程序没有出现在busctl列表中正常吗?我是做错了什么还是使用了错误的库来做我想做的事?
好的,似乎有 2 条总线,而我没有使用系统总线。
我不得不将方法 session
替换为 system
以指示我希望我的程序在系统总线上 运行 。
像这样:
let _ = ConnectionBuilder::system()?
.name("org.zbus.MyGreeter")?
.serve_at("/org/zbus/MyGreeter", greeter)?
.build()
.await?;
这样做是不够的,因为我的程序没有权限在总线系统上创建服务。所以我必须在 /usr/share/dbus-1/system.d
中创建一个文件,其中我确实写了 需要的。
我正在使用 zbus crate 使服务器能够从 dbus 获取事件。 它运行良好,我的代码(与文档中的 example 基本相同)能够接收事件,所以没问题。
我使用 busctl
发送事件,如示例所示:
busctl --user call org.zbus.MyGreeter /org/zbus/MyGreeter org.zbus.MyGreeter1 SayHello s "Maria"
而且我的代码能够很好地接收带有参数的事件。
问题是我遇到了 some issues with udev,在尝试修复它时我发现了一些奇怪的事情:
- 如果我向另一个用户发送事件,它会失败并显示
Call failed: the name org.zbus.MyGreeter was not provided by any .service files
,而我的程序是 运行 - 当我执行
busctl list --acquired
时,我在结果中看不到org.zbus.MyGreeter
我的问题是:我的程序没有出现在busctl列表中正常吗?我是做错了什么还是使用了错误的库来做我想做的事?
好的,似乎有 2 条总线,而我没有使用系统总线。
我不得不将方法 session
替换为 system
以指示我希望我的程序在系统总线上 运行 。
像这样:
let _ = ConnectionBuilder::system()?
.name("org.zbus.MyGreeter")?
.serve_at("/org/zbus/MyGreeter", greeter)?
.build()
.await?;
这样做是不够的,因为我的程序没有权限在总线系统上创建服务。所以我必须在 /usr/share/dbus-1/system.d
中创建一个文件,其中我确实写了