首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Golang启动D-总线服务

使用Golang启动D-总线服务
EN

Stack Overflow用户
提问于 2017-11-16 02:46:05
回答 1查看 2.2K关注 0票数 0

现在,我正在使用D-Bus API为golang启动一个systemd服务(我的服务只是调用一个shell脚本)。

我在/usr/share/dbus-1/system-services/org.freedesktop.hello.service上做了一个D总线服务。

代码语言:javascript
复制
[D-BUS Service]
Name=org.freedesktop.hello
Exec=/bin/false
User=root
SystemdService=hello.service

和/lib/ systemd /system/hello.service中的systemd服务。

代码语言:javascript
复制
[Unit]
Description=Hello

[Service]
Type=dbus
BusName=org.freedesktop.hello
ExecStart=/opt/hello.sh

我试图获得以下代码的相同结果,这是有效的。

代码语言:javascript
复制
sudo gdbus call --system --dest org.freedesktop.hello --object-path /org/freedesktop/hello --method org.freedesktop.DBus.Introspectable.Introspect

不管我在戈朗的错误是什么,

代码语言:javascript
复制
The name org.freedesktop.hello was not provided by any .service files

我现在的代码是

代码语言:javascript
复制
package main

import (
    "encoding/json"
    "github.com/godbus/dbus"
    "os"
    "github.com/godbus/dbus/introspect"
)

func main() {
    conn, error1 := dbus.SessionBus()
    if error1 != nil {
        panic(error1)
    }
    node, err2 := introspect.Call(conn.Object("org.freedesktop.hello", "/org/freedesktop/hello"))
    if err2 != nil {
        panic(err2)
    }
    data, _ := json.MarshalIndent(node, "", "   ")
    os.Stdout.Write(data)
}

关于这件事我没有太多的信息,所以我想得到一些帮助。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 07:18:25

代码语言:javascript
复制
sudo gdbus call --system ...

在公共汽车上。

代码语言:javascript
复制
...
conn, error1 := dbus.SessionBus()
...

这是在会话总线上。

尝试使用类似于dbus.SystemBus()的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47320709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档