Como executar o programa C ++ sempre que uma unidade flash USB é inserida
9
Eu tenho um programa C ++ que acessa pen drives / pen drives. Ele funciona para a unidade flash atualmente inserida. Um programa C ++ normal não é executado até executá-lo. Mas eu queria que o programa fosse executado automaticamente sempre que uma unidade flash fosse inserida. Como eu posso fazer isso?
Se você deseja que seu programa diferencie os discos, execute operações diferentes, use (você pode passar o número de série ou qualquer atributo que desejar):
Eu gosto dessa abordagem, voto positivo, parabéns!
Frantique
2
+150: Ótima resposta: (AFAIK é melhor que aceito) Faz uma regra geral para qualquer dispositivo USB. Na resposta aceita, o USB é restrito a um VID e um PID.
Helio
5
Você pode usar udevpara executar um comando albitrário. Para fazê-lo funcionar, crie uma regra em /etc/udev/rules.d/:
Eu não concordo O programa C ++ é um "comando", afinal. O usuário está solicitando uma solução para acionar esse comando. (Ele disse: "Mas eu queria que o programa fosse executado automaticamente sempre que uma unidade flash fosse inserida. Como eu poderia fazer isso?")
Frantique
Para esta saída [ ideone.com/uOReNj ] de lsusb, quais serão os valores de XXXXe YYYY?
Vinayawsm #
Se o seu pendrive for o Kingston, então: XXXX = 0951 e AAAA = 162f.
Frantique
Para permitir que meu código seja acionado para cada pen drive diferente, devo sempre atualizar o arquivo "my-usb-device.rules"?
Vinayawsm #
Você precisa criar regras para todos os dispositivos. Ou melhor refatorar seu código C ++ para executar como daemon e observar os gatilhos do udev.
Você pode usar
udev
para executar um comando albitrário. Para fazê-lo funcionar, crie uma regra em/etc/udev/rules.d/
:E entre:
NOTA: Os valores
XXXX
eYYYY
serão retirados dalsusb
saída.fonte
XXXX
eYYYY
?