我遇到的问题是使用低级API在C中打印出dbus方法调用的响应。我对C的libdbus不太熟悉,但已经在python-dbus中做了一些工作。
可以同步或异步进行。
- 我知道如何在Python和CLI中编写dbus方法和方法调用。
- 我可以在互联网上找到调用dbus方法的代码,但它们不会返回或打印出响应。
- 我一直在查看libdbus doxygen api,但无法确定如何提取响应。
我的代码设置方式是运行一个带有我想要调用的方法的python dbus守护程序。其中一些方法返回字符串。我想让一个C程序连接到会话总线,调用该方法,打印出回复并退出。
这是我目前拥有的:
#include <stdio.h>
#include <dbus/dbus.h>
static void send_dbus_message (DBusConnection *connection, const char *msg)
{
DBusMessage *message;
//initialize the message
message = dbus_message_new_signal ("/org/example/foo/bar",
"org.example.foo.bar",
msg);
//send the message
dbus_connection_send (connection, message, NULL);
//deallocate the message
dbus_message_unref (message);
}
int main (int argc, char **argv)
{
DBusConnection *connection;
DBusError error;
//init error message
dbus_error_init (&error);
connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
if (!connection)
{
printf ("Connection to D-BUS daemon failed: %s", error.message);
//deallocate error message
dbus_error_free (&error);
return 1;
}
send_dbus_message (connection, "HelloWorld");
return 0;
}
可以同步或异步进行。