Comment exécuter le programme C ++ chaque fois qu'un lecteur flash USB est inséré
9
J'ai un programme C ++ qui accède aux clés USB / clés USB. Cela fonctionne pour le lecteur flash actuellement inséré. Un programme C ++ normal ne s'exécute que lorsque nous l'exécutons. Mais je voulais que le programme s'exécute automatiquement chaque fois qu'un lecteur flash est inséré. Comment puis je faire ça?
Pour une utilisation générale, si vous souhaitez exécuter votre programme pour n'importe quel stockage USB. Utilisez le pilote pour la correspondance de règle.
Si vous voulez que votre programme distingue les disques, afin qu'il exécute différentes opérations, utilisez (vous pouvez transmettre son numéro de série ou tout attribut que vous aimez):
J'aime cette approche, vote positif, félicitations!
Frantique
2
+150: Grande réponse: (AFAIK mieux qu'accepté) Cela fait une règle générale pour tout périphérique USB. Dans la réponse acceptée, l'USB est limité à un VID et à un PID.
Helio
5
Vous pouvez utiliser udevpour exécuter une commande arbitraire. Pour le faire fonctionner, créez une règle dans /etc/udev/rules.d/:
Je ne suis pas d'accord. Le programme C ++ est une "commande" après tout. L'utilisateur demande une solution pour déclencher cette commande. (Il a dit: "Mais je voulais que le programme s'exécute automatiquement chaque fois qu'un lecteur flash est inséré. Comment pourrais-je faire cela?")
Frantique
Pour cette sortie [ ideone.com/uOReNj ] de lsusb, quelles seront les valeurs de XXXXet YYYY?
vinayawsm
Si votre clé USB est le Kingston, alors: XXXX = 0951 et YYYY = 162f.
Frantique
Pour laisser mon code se déclencher pour chaque clé USB, dois-je toujours mettre à jour le fichier "my-usb-device.rules"?
vinayawsm
Vous devez créer une règle pour chaque appareil. Ou mieux refactorisez votre code C ++ pour qu'il s'exécute en tant que démon et observez les déclencheurs udev.
Vous pouvez utiliser
udev
pour exécuter une commande arbitraire. Pour le faire fonctionner, créez une règle dans/etc/udev/rules.d/
:Et entrez:
REMARQUE: Les valeurs
XXXX
etYYYY
seront extraites de lalsusb
sortie.la source
XXXX
etYYYY
?