2016-07-01 2 views
-1

Возможно, существует 1000 или более веб-ресурсов, которые объясняют, как можно запускать приложение при подключении USB-устройства. То, что я ищу, - это метод, который квалифицирует действие на двух установленных устройствах (они могут быть подключены в любом порядке и в любое время). Я подумал о схеме, где каждое устройство имеет свое собственное действие, которое создает отдельный переходный файл, а затем проверяет, не создало ли другое устройство его файл. Это кажется громоздким и может быть склонным к гонкам. Есть ли лучший способ подойти к проблеме?Запуск программы linux при подключении двух конкретных USB-устройств

+2

Почему бы им не искать другое устройство? –

ответ

1

Сначала выясните, как запускать программу при подключении USB-устройств с использованием указанных вами ресурсов. Затем напишите программу на C, которая использует libusb или libudev для проверки наличия обоих устройств. Если оба устройства обнаружены, активируйте любое действие, которое вы хотите выполнить.

+0

C может не потребоваться в зависимости от того, что такое устройства. –

+0

Конечно, любой lanuage, который может использовать обертки для libusb и libudev, будет работать. И если ваше устройство может быть обнаружено каким-то другим способом (например, с помощью 'ls'), вы можете это сделать. –

0

Вызов длительных процессов из правил udev довольно сложно в новых дистрибутивах Linux, но, оставив данные о битве в стороне, я взял совет Давидса. Оба правила udev ссылаются на тот же скрипт Python, который проверяет оба устройства и запускает приложение, если оно присутствует. Для предотвращения гонок между двумя параллельными экземплярами скрипта потребовалось немного работы, но я закончил использование переименования файла в/var/run/myapp как мьютексе. Еще нужно «удалить» правило, чтобы убить процесс, но это более простая штука.