Рейтинг:
7
Jochen Arndt
Это зависит от того, какое устройство вы проверяете. Вы должны перечислить USB-устройства и проверить соответствие типов или имен устройств. Используйте что-то вроде "c++ linux перечисляет usb-устройства" с вашей любимой поисковой системой, чтобы знать, как это сделать.
Для быстрой проверки существующих устройств используйте lsusb инструмент командной строки (lsusb(8): USB-устройства - страница руководства Linux[^Вы также можете получить исходный код этого инструмента, чтобы увидеть, как можно выполнить перечисление.
[РЕДАКТИРОВАТЬ]
Если вы хотите проверить наличие автоматически монтируемых USB-накопителей, перечислите записи каталога, в котором эти устройства монтируются (обычно по адресу /средства массовой информации) игнорирование других устройств, таких как загруженные CD/DVD-диски.
Чтобы получить информацию о том, когда USB-носитель вставляется или удаляется, вы можете использовать halevt или старый ivman.
[/РЕДАКТИРОВАТЬ]
Member 13740197
Я попробовал ниже,но если usb не подключен и он входит в состояние if.Скажи мне, почему?
ret = система("lsusb -v");
если (ret == 0)
pop_up("подключил вам USB-накопитель...");
еще
{
pop_up("USB-накопитель не подключен..");
вернуть;
}
Jochen Arndt
Вы должны печатать lsusb на оболочке сначала нужно увидеть, какие устройства присутствуют, чтобы вы могли определить, для чего вы ищете.
Если вы хотите использовать его с system(), вы должны использовать параметры командной строки-s или-d, потому что только с ними возвращаемое значение указывает, были ли найдены соответствующие устройства или нет. Во всех остальных случаях он возвращает ноль (успех), если ошибки не происходит, потому что он перечисляет не только устройства, подключенные извне, но и внутренние концентраторы, которые всегда присутствуют.
Member 13740197
Он напрашивается на аргументы
lsusb -s [[bus]:][devnum]
поставщик lsusb -d:[продукт]
то, что я должен дать здесь.Мое требование состоит только в том, чтобы проверить, подключен ли USB или нет.Если он подключен, то должен скопировать файл, в противном случае он должен отобразить сообщение пользователю для подключения USB.
Jochen Arndt
Смотрите первое предложение моего ответа:
"Это зависит от того, какое устройство вы проверяете".
USB-это шина, к которой можно подключить несколько устройств. И всегда есть уже устройства (концентраторы на материнской плате), даже если никакое внешнее устройство не подключено.
Вы должны сначала указать, что вы ищете. Я не могу читать ваши мысли, но догадываюсь, что вы ищете устройства хранения данных. Но существует множество типов запоминающих устройств (USB-накопители, внешние жесткие диски, считыватели карт памяти со вставленными картами памяти, смартфоны в режиме доступа к файлам), и их может быть несколько одновременно подключенных.
Вы также можете подключить USB-клавиатуру и/или мышь.
Надеюсь, теперь вы понимаете, что "подключен ли USB или нет" не имеет смысла для такой шинной системы, когда не определено конкретное устройство или класс устройств
Но я обновлю свой ответ, переоценивая USB-устройства хранения данных, потому что они обычно монтируются автоматически.
Member 13740197
Извините,что не упомянул, USB означает флешку.Мне нужно знать, подключен ли Pendrive или нет, используя условие if.
Jochen Arndt
Конкретный (одиночный) перьевой накопитель или любой другой?
Вы должны найти способ идентифицировать "флешку".
Один конкретный человек:
Вставьте его, проверьте его значения с помощью "lsusb -v" и используйте соответствующие значения позже с помощью опции "-d".
Любой с известной структурой каталогов:
Насколько я знаю, это всего лишь USB-накопители (устройства хранения данных). Таким образом, вы должны искать устройства хранения данных, монтировать их (если это не делается автоматически при вставке) и проверять, соответствует ли структура каталогов.
Любое другое:
Вы должны найти способ, чтобы идентифицировать его.