#include #include #include static DBusHandlerResult ping_message_function (DBusConnection *connection, DBusMessage *message, void *user_data) { DBusMessage *reply; reply = dbus_message_new_method_return (message); dbus_connection_send (connection, reply, NULL); dbus_connection_flush (connection); sleep (5); exit (0); } static const DBusObjectPathVTable ping_vtable = { .message_function = ping_message_function }; int main (void) { DBusConnection *session; session = dbus_bus_get (DBUS_BUS_SESSION, NULL); if (session == NULL) return 1; if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != dbus_bus_request_name (session, "ca.desrt.Ping", DBUS_NAME_FLAG_DO_NOT_QUEUE, NULL)) return 1; dbus_connection_register_object_path (session, "/ca/desrt/Ping", &ping_vtable, NULL); while (TRUE) dbus_connection_read_write_dispatch (session, -1); }