Détection d'événements sous linux

ricthy Messages postés 1 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 10 février 2006 - 10 févr. 2006 à 23:27
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 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(++).

Merci a tous ;)

Ritchy

1 réponse

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
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.

Bonne chance.
Bouba.
0
Rejoignez-nous