#include <QObject>
#include <QtDBus/QDBusConnection>
#include <QtDBus/QDBusMessage>
#include <QtCore/QCoreApplication>
#include <cstdio>

class Sender : public QObject {
    Q_OBJECT

public:
    void send()
    {
        QDBusMessage msg = QDBusMessage::createSignal(
                QString("/"), QString("my.example.signal"), QString("clearMemoryCaches"));
        QDBusConnection::sessionBus().send(msg);

        // You can listen to this signal like:
        // QDBusConnection::sessionBus().connect(
        //    QString(""), QString(""), QString("my.example.signal"), QString("clearMemoryCaches")
        //    , this, SLOT(clearMemoryCachesSlot()));
    }
};

#include "Send.moc"

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    Sender sender;
    puts("Pressing key activates signal.");
    while (true) {
        getchar();
        sender.send();
    }
    return a.exec();
}
