ricthy
Messages postés1Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention10 février 2006
-
10 févr. 2006 à 23:27
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
11 févr. 2006 à 00:11
salut @ tous !
j'ai posé cette question sur différents forums, et personne n'a pu me donner de réponse, donc je tente ma chance chez les pros du C++ ;) :
comment faire (sous linux 2.6, en C ou C++) pour détecter le branchement à chaud d'un périphérique et récupérer toutes les infos dessus (nom du produit, fichier de /dev, nature -usb, scsi, etc.) ??
Existe-t-il une API qui permette de récupérer ces événements venant du kernel (ou hotplug) ?
Je sais qu'il existe une solution en trafiquant les scripts shells de hotplug (les fichiers /etc/hotplug/*.agent), mais ce qui m'intéresse c'est de le faire en C(++).
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 11 févr. 2006 à 00:11
Salut, en faisant une petite recherche j'ai trouvé ça:
http://linux-diag.sourceforge.net/Sysfsutils.html http://evlog.sourceforge.net/ http://www.liblogging.org/index.php J'ai jamais utilisé ces libs mais si tu peux capturer les logs et événements du noyau avec, puis faire un filtre pour ne traiter que les événements qui t'intéressent (ceux qui sont générés lors du branchements de périphs) ça peut le faire.
Ensuite, une fois que les événements sont capturés, pour chopper des infos sur le périphériques y'a moyen d'utiliser udev, une fois que tu connais le fichier dans /dev tu peux vite savoir si le périphérique est de type "char", "block" ou "network", pour savoir si c'est un périphérique USB ou SCSI ou autre tu peux regarder le numéro "major" et "minor" associé au fichier dans /dev.
Après, pour plus d'infos sur le produit en USB y'a la libusb (http://libusb.sourceforge.net/ et http://www.lrr.in.tum.de/Par/arch/usb/usbdoc/), tu peux aussi parser la sortie de la commande "lsusb"
Pour le SCSI et autres, je ne sais pas...
Voilà, j'espère que je t'ai donné un peux plus de pistes pour chercher.