[dbus] dbus hello
2009-05-14 08:06:57| 分类:
gui_X
| 标签:
|举报
|字号大中小 订阅
d-bus 是啥?请听下回分解~
下面的程序在 OpenBSD 4.5 上 OK~
-------------------------------------------------------------------
CFLAGS=-I/usr/local/include/dbus-1.0 `pkg-config --cflags gtk+-2.0`
LIBS=-L/usr/local/lib -ldbus-1 -ldbus-glib-1 -lpthread `pkg-config --libs gtk+-2.0`
all:
gcc ${CFLAGS} main.c ${LIBS}
-------------------------------------------------------------------
#include <gtk/gtk.h>
#include <dbus/dbus-glib-bindings.h>
int main(int argc, char *argv[])
{
DBusGConnection *conn;
GError *error;
DBusGProxy *proxy;
char **name_list;
char **name_list_ptr;
g_type_init();
error = NULL;
conn = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
if ( conn == NULL )
{
g_printerr("Failed to open connection to bus: %s\n",
error->message);
g_error_free(error);
exit(1);
}
proxy = dbus_g_proxy_new_for_name(conn,
DBUS_SERVICE_DBUS,
DBUS_PATH_DBUS,
DBUS_INTERFACE_DBUS);
error = NULL;
if ( !dbus_g_proxy_call(proxy, "ListNames", &error, G_TYPE_INVALID,
G_TYPE_STRV, &name_list, G_TYPE_INVALID) )
{
if ( error->domain == DBUS_GERROR &&
error->code == DBUS_GERROR_REMOTE_EXCEPTION )
{
g_printerr("Caught remote method exception %s: %s",
dbus_g_error_get_name(error),
error->message);
}
else
{
g_printerr("Error: %s\n", error->message);
}
g_error_free(error);
exit(1);
}
g_print("Names on the message bus:\n");
for ( name_list_ptr = name_list; *name_list_ptr; name_list_ptr++ )
{
g_print(" %s\n", *name_list_ptr);
}
g_strfreev(name_list);
g_object_unref(proxy);
return 0;
}
评论这张
转发至微博
转发至微博
评论