hne

Joined: 11 Jul 2008 Posts: 210 Location: Hannover
|
Posted: 04.08.2014, 16:36 Post subject: USB hotplug |
|
|
Frage aus dem Support:
Nun suche ich eine einfache und vor allem resourcen-schonende Möglichkeit in einem C-Programm zu erkennen, ob (im laufenden Betrieb) ein USB-Memory-Stick an den DNP angeschlossen wurde.
Sobald ein USB-Gerät eingesteckt oder herausgezogen wird, ruft der Kernel die Datei /sbin/hotplug auf.
Die Datei muss ausführbar sein. Dort hinterlegen Sie einen Script, der z.B. ein Kill-Signal an Ihr C-Programm sendet. Im Script bitte ACTION und DEVPATH auswerten, um herauszufiltern, dass es sich um einen USB-Stick handelt. (siehe http://linux.die.net/man/8/hotplug und https://www.kernel.org/doc/Documentation/usb/hotplug.txt)
Im C-Programm können Sie sleep oder eine andere wartende Funktion (z.B. select) aufrufen, und auf das Signal warten.
Um die Funktion von Hotplug zu benutzen ist es hilfreich, sich erst einmal die Inhalte der Variablen bei bestimmten Events in eine Datei zu schreiben. Am einfachsten geht das mit einem Logeintrag, z.B. mit folgenden Zeilen, abgespeichert als /sbin/hotplug:
Code: | #!/bin/sh
logger -t DEBUG "hotplug usb: action='$ACTION' devicename='$DEVICENAME' devname='$DEVNAME' devpath='$DEVPATH' product='$PRODUCT' type='$TYPE' interface='$INTERFACE'" | (Beispiel aus http://wiki.openwrt.org/doc/techref/hotplug) _________________ Henry Nestler |
|