Détection d'événements sous linux

Signaler
Messages postés
1
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
10 février 2006
-
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
-
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

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