libgudev uevent

Der Wolf

Erfahrenes Mitglied
Hallo Leute,

ich wollte mir unter Linux einen kleinen Daemon schreiben, der darauf wartet, dass ich eine Kinect mit dem Laptop verbindet. Dafür wollte ich die libgudev verwenden und mich auf das uevent Signal verbinden und benachrichtigt zu werden, wenn das Device angeschlossen wird. Allerdings scheine ich ein entsprechendes Signal nicht zu bekommen obwohl ich unter "dmesg" sehe, dass die Kinect angeschlossen und wieder vom Laptop entfernt wird. Ich hoffe es kann mir jemand weiterhelfen.

C++:
#include <stdio.h>
#include <unistd.h>

#include <gudev/gudev.h>
#include <glib-object.h>

void signalHandle(GUdevClient *pClient, gchar *action, GUdevDevice *pDevice, gpointer *pData)
{
        printf("Signal received.\n");
}

int main(int argc, char *argv[])
{
        g_type_init();
        const gchar* subsystems[] = {"usb", NULL};

        GUdevClient *pClient = g_udev_client_new(subsystems);
        g_signal_connect(pClient, "uevent", G_CALLBACK(signalHandle), NULL);

        while (true) {
                sleep(1);
        }
}

Gruß,
Wolf
 
Zuletzt bearbeitet von einem Moderator:

deepthroat

Erfahrenes Mitglied
Hi.

Ich würde vermuten, das du zu aller erst mal einen Main Loop benötigst, ohne den funktioniert normalerweise in der Gtk+ Welt nichts...
 

Der Wolf

Erfahrenes Mitglied
Hmmm, ich hätte angenommen, da ich nur die glib verwende bräuchte ich die gtk Initialisierung nicht. Ich kann es aber im Moment leider nicht testen, da ich noch im Büro bin. ;)
 

Der Wolf

Erfahrenes Mitglied
Als kleine Rückmeldung: Es war tatsächlich die von deepthroat genannte main-loop die gefehlt hat. Vielen Dank für den Tipp deepthroat.

Gruß,
Wolf
 

Neue Beiträge