Saya memiliki program C++ yang mengakses pen drive/flash drive USB. Ini berfungsi untuk flash drive yang saat ini dimasukkan. Program C++ normal tidak dijalankan sampai kita menjalankannya. Tapi saya ingin program berjalan secara otomatis setiap kali flash drive dimasukkan. Bagaimana saya bisa melakukannya?
Jawaban yang Diterima:
Untuk penggunaan umum, Jika Anda ingin menjalankan program Anda untuk penyimpanan USB apa pun. Gunakan driver untuk kecocokan aturan.
-
Tambahkan
udev
file aturansudo nano /etc/udev/rules.d/90-detect-storage.rules
-
Tambahkan aturan ini
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
Jika Anda ingin program Anda membedakan disk, sehingga menjalankan operasi yang berbeda, gunakan (Anda dapat memberikan nomor seri atau atribut apa pun yang Anda suka):
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
-
Muat ulang semua aturan
sudo udevadm control --reload-rules
-
Cabut dan pasang kembali flash drive
Catatan:
-
Saya menggunakan aturan ini hanya untuk menguji yang membuat log saat aturan dipicu:
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/bin/sh -c 'echo $env{ID_VENDOR_ID} $env{ID_MODEL_ID} >> /home/username/Desktop/usb-storage.log'"
-
Anda dapat mengomentari aturan yang tidak Anda inginkan dengan menambahkan
#
ke awal baris. File aturan dapat berisi beberapa aturan. -
Untuk memeriksa semua
env
yang tersedia variabel, gunakan:ACTION=="add", DRIVERS=="usb-storage", RUN+="/bin/sh -c 'echo == >> /home/username/Desktop/usb-storage-env.log; env >> /home/username/Desktop/usb-storage-env.log'"
-
Untuk memeriksa parameter yang akan digunakan untuk kecocokan aturan, jalankan:
sudo udevadm info --name=/dev/sdb1 --attribute-walk
Referensi:
- Berikan ATTR{idVendor} sebagai argumen dalam skrip udev
- Menulis aturan udev oleh Daniel Drake