leo_wow 2020-10-29 14:23 采纳率: 0%
浏览 121

通过godbus调用dbus接口启用服务失败,求助!

通过godbus调用dbus接口启用服务失败

    conn, err := dbus.SystemBus()
    if err != nil {
        panic(err)
    }
    var s string
    file := "test.service"
    var target []string
    target = append(target, file)

    err = conn.Object("org.freedesktop.systemd1", "/org/freedesktop/systemd1").Call("org.freedesktop.systemd1.Manager.EnableUnitFiles", 0, target, false, true).Store(&s)
    if err != nil {
        fmt.Fprintln(os.Stderr, "Failed to enable", err)
        os.Exit(1)
    }

输出结果

Failed to enable dbus.Store: length mismatch
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-24 22:51
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据代码提供的调用dbus接口的部分和报错信息,我们可以初步推断可能是参数传入不正确导致调用失败。具体来说,报错信息"dbus.Store: length mismatch"表明传入的参数与预期长度不匹配。 解决方案:
    1. 检查参数格式:确保传入的参数target是一个字符串数组,且每个元素都是有效的文件路径字符串。
    2. 调整参数数量:根据dbus接口"org.freedesktop.systemd1.Manager.EnableUnitFiles"的要求,检查是否需要传入更多参数或调整参数的顺序。 示例代码修正:
    conn, err := dbus.SystemBus()
    if err != nil {
        panic(err)
    }
    var s string
    file := "test.service"
    var target []string
    target = append(target, file)
    // 调整参数顺序
    err = conn.Object("org.freedesktop.systemd1", "/org/freedesktop/systemd1").Call("org.freedesktop.systemd1.Manager.EnableUnitFiles", target, false, true).Store(&s)
    if err != nil {
        fmt.Fprintln(os.Stderr, "Failed to enable", err)
        os.Exit(1)
    }
    

    通过以上修正,我们可以尝试重新调用dbus接口启用服务,看是否能够成功。如果还是有问题,可能需要进一步检查dbus接口的文档以确保参数传入的正确性。

    评论

报告相同问题?

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)