Systemd dbus sd_bus_call_method() 与数组

Posted

技术标签:

【中文标题】Systemd dbus sd_bus_call_method() 与数组【英文标题】:Systemd dbus sd_bus_call_method() with array 【发布时间】:2017-03-23 01:59:34 【问题描述】:

我正在尝试使用 systemd dbus 修改一些代码。

方法调用如下所示:

res = sd_bus_call_method(bus,
    SERVICE_NAME,
    OBJECT_PATH,
    INTERFACE,
    "AddData",
    &error, &m,
    "ss",
    data->key,
    data->valyue);

现在我正在尝试将其更改为:

res = sd_bus_call_method(bus,
    SERVICE_NAME,
    OBJECT_PATH,
    INTERFACE,
    "AddData",
    &error, &m,
    "(a(ss))",
    /* WHAT DO I PASS HERE? */);

我找不到示例或文档,而且代码对我来说不是很清楚。

【问题讨论】:

【参考方案1】:

来自文档sd_bus_call_method

sd_bus_call_method() 是一个方便的函数,用于初始化总线消息对象并调用相应的 D-Bus 方法。它将 sd_bus_message_new_method_call(3)、sd_bus_message_append(3) 和 sd_bus_call(3) 函数组合成一个函数调用。

参数详情请见sd_bus_message_append()。

res = sd_bus_call_method(bus,
    SERVICE_NAME,
    OBJECT_PATH,
    INTERFACE,
    "AddData",
    &error, &m,
    "(a(ss))",
    1, /* size of array */
    "hello",
    "world");

【讨论】:

以上是关于Systemd dbus sd_bus_call_method() 与数组的主要内容,如果未能解决你的问题,请参考以下文章

与 SystemD 的 Linux DBus 远程 TCP 连接失败

如何在 dbus 回调函数中获取 systemd 服务信息

如何通过 python 和 dbus (systemd-run like) 创建 systemd 瞬态计时器和服务?

如何通过 Systemd DBus API 提取服务状态?

Systemd dbus sd_bus_call_method() 与数组

systemd 服务无法连接到会话 d-bus