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 连接失败
如何通过 python 和 dbus (systemd-run like) 创建 systemd 瞬态计时器和服务?