2016-11-09 323 views
0

我想修改一些使用systemd dbus的代碼。Systemd dbus sd_bus_call_method()與數組

方法調用看起來是這樣的:

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? */); 

我找不到實例或文檔和代碼不超清晰對我來說。

回答

4

原來這一切都很簡單。

我找不到sd_bus_call_method()的文檔,但sd_bus_message_append()有一些很好的docs

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