ฉันมีโปรแกรม C ++ ที่เข้าถึงไดรฟ์ปากกา USB / แฟลชไดรฟ์ ใช้งานได้กับแฟลชไดรฟ์ที่เสียบอยู่ในปัจจุบัน โปรแกรม C ++ ปกติจะไม่ทำงานจนกว่าเราจะรัน แต่ฉันต้องการให้โปรแกรมทำงานโดยอัตโนมัติทุกครั้งที่ใส่แฟลชไดรฟ์ ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันมีโปรแกรม C ++ ที่เข้าถึงไดรฟ์ปากกา USB / แฟลชไดรฟ์ ใช้งานได้กับแฟลชไดรฟ์ที่เสียบอยู่ในปัจจุบัน โปรแกรม C ++ ปกติจะไม่ทำงานจนกว่าเราจะรัน แต่ฉันต้องการให้โปรแกรมทำงานโดยอัตโนมัติทุกครั้งที่ใส่แฟลชไดรฟ์ ฉันจะทำสิ่งนั้นได้อย่างไร
คำตอบ:
สำหรับการใช้งานทั่วไปหากคุณต้องการรันโปรแกรมสำหรับที่เก็บข้อมูล USB ใด ๆ ใช้ไดรเวอร์สำหรับการจับคู่กฎ
เพิ่มudev
ไฟล์กฎ
sudo nano /etc/udev/rules.d/90-detect-storage.rules
เพิ่มกฎนี้
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
หากคุณต้องการให้โปรแกรมของคุณแยกแยะดิสก์ดังนั้นจึงเรียกใช้การดำเนินการต่าง ๆ ให้ใช้ (คุณสามารถส่งผ่านหมายเลขซีเรียลหรือแอตทริบิวต์ที่คุณต้องการ):
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
โหลดกฎทั้งหมดใหม่
sudo udevadm control --reload-rules
ถอดปลั๊กและถอดแฟลชไดรฟ์ออก
หมายเหตุ:
ฉันใช้กฎนี้เพียงเพื่อทดสอบว่าสร้างบันทึกเมื่อมีการเรียกใช้กฎ:
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'"
คุณสามารถแสดงความคิดเห็นกฎที่คุณไม่ต้องการโดยการเพิ่ม#
ที่จุดเริ่มต้นของบรรทัด ไฟล์กฎสามารถมีได้หลายกฎ
ในการตรวจสอบenv
ตัวแปรทั้งหมดที่มีให้ใช้:
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'"
ในการตรวจสอบพารามิเตอร์ที่จะใช้สำหรับการจับคู่กฎให้เรียกใช้:
sudo udevadm info --name=/dev/sdb1 --attribute-walk
อ้างอิง:
คุณสามารถใช้udev
เพื่อเรียกใช้คำสั่งแบบกำหนดเอง หากต้องการทำให้มันใช้งานได้ให้สร้างกฎใน/etc/udev/rules.d/
:
sudo nano /etc/udev/rules.d/my-usb-device.rules
และป้อน:
ACTION=="add", ATTRS{idProduct}=="XXXX", ATTRS{idVendor}=="YYYY", RUN+="/location/of/my/command"
หมายเหตุ:XXXX
และYYYY
ค่าจะถูกนำมาจากlsusb
การส่งออก