使用Golang通过DBUS发送命令的实现方法
使用Golang通过DBUS发送命令的实现方法 我正在尝试使用 https://godoc.org/github.com/godbus/dbus 通过代码发送重启系统的命令。
似乎无法正确发送命令。 使用典型的 dbus 我可以发送:“dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 “org.freedesktop.login1.Manager.Reboot” boolean:true”
我试图通过 godbus 实现与该命令相同的效果。以下是我的代码:
conn, err := dbus.SystemBus()
if err != nil {
panic(err)
}
conn.Emit("/org/freedesktop/login1", "org.freedesktop.login1.Manager.Reboot", "boolean:'true'")
if err != nil {
fmt.Println(err)
}
更多关于使用Golang通过DBUS发送命令的实现方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
4 回复
我没有使用过它,但从文档来看,emit 的调用方式应该类似于 conn.Emit("/org/freedesktop/login1", "org.freedesktop.login1.Manager.Reboot", true)。
如果这不起作用,请告诉我们打印 err 时得到的错误信息。
conn.Emit("/org/freedesktop/login1", "org.freedesktop.login1.Manager.Reboot", true)
我按照您写的方式尝试了。程序运行后退出,没有打印任何错误。
conn, err := dbus.SessionBus()
if err != nil {
panic(err)
}
err = conn.Emit("/org/freedesktop/login1", "org.freedesktop.login1.Manager.Reboot", true)
if err != nil {
fmt.Println(err)
}
同时尝试了 SessionBus 和 SystemBus,两者都没有报错。


