J'utilise Linux Inotify pour détecter les événements FS sur mon programme. P>
Comment pourrais-je être averti lorsqu'un périphérique est monté sur un répertoire surveillé? p>
5 Réponses :
Je ne pense pas que vous puissiez le faire avec inotify code>. Voici la méthode cependant: p>
" action "n'est pas < code> "montage" code>. li>
"/ proc / monts" code> a> Lorsque vous obtenez un événement avec un
"mont" code> action. LI>
L'alternative consiste à mettre une montre inotify code> sur
/ etc / mtab cod>, et faites le même type d'analyse que vous le feriez sur
/ proc / procès code >. Mais c'est beaucoup plus fragile.
Je ne suis pas sûr qu'il y ait des actions code> code> à partir de uevent code> dans le noyau maintenant. Il semble que c'était considéré comme cassé et supprimé .
edit: strong> Mise à jour d'avoir moins de 5 ans obsolète p>
Si vous êtes sur quoi que ce soit le plus ancien des systèmes, libudev est ce que vous voulez pour la première étape. P>
Si vous êtes sur quelque chose à partir de cette décennie, uDisks fera tout cela pour toi aussi. Vous auriez besoin de regarder le org.freedesktop.dbus.ObjectManager interface sur / org / freeesktop / UDisks2 pour voir quand neuf Systèmes de fichiers < / a> monte. p>
Si cela ne vous dérange pas lots em> de fausses alarmes, vous pourrez peut-être surveiller pour fermer_nowrite code> sur
/ etc / fstab code>. . Regarder
/ etc / mtab code>,
/ proc / procès code>, etc. ne fonctionne pas pour moi. P>
sur les systèmes Linux modernes / etc / mtab pointe souvent sur / proc / profonctions / montures: P>
proc (5) Manpage dit que vous n'avez pas ' Il faut vraiment utiliser Inotify pour ce fichier, il est pollable: P>
Depuis la version 2.6.15 du noyau, cette
Le fichier est pollable: après avoir ouvert le fichier pour la lecture, un changement
Dans ce fichier (c'est-à-dire un mont de système de fichiers ou une seule fois) causes
Sélectionnez (2) pour marquer le descripteur de fichier comme lisible et sondage (2)
et epoll_wait (2) Marquez le fichier comme ayant une condition d'erreur. P>
blockQuote>
a été interrogé pourquoi inotify ne fonctionne pas sur / etc / mtab et trouvé ce manage. P> $ ls -l / etc / mtab
LRWXRWXRWX 1 racine racine 12 Sep 5 2013 / etc / MTAB -> / Proc / Supports
$ LS -L / Proc / Supports
lrwxrwxrwx 1 racine root 11 juil 10 14:56 / proc / Supports -> Soi / Supports Code> P>
inotify vous indique uniquement des démontements, et les utevents ne vous indiffent plus de mont / un démontement.
La voie à suivre est de sonder / proc / Supports, de lire dans le contenu et de garder une trace des supports que vous avez J'ai vu, puis répéter quand le sondage se réveille. Le sondage se réveillera sur ERR / PRI lorsque tout système de fichiers est monté ou démonté. P> Le code ci-dessus imprime simplement les points de montage au démarrage, puis sur n'importe quel montage / démonter. C'est à vous de vous "différer" de savoir ce qui a été ajouté / supprimé. P> Remarque, toutes ces techniques ont été à la fois instable et / ou cassées dans des versions de Linux antérieures. Tout est devenu stable vers la fin de Linux 2.6.35 (ou peut-être un peu plus tôt). P> p>