Member 13740197 Ответов: 1

Как проверить, подключен ли usb или нет в системе linux с помощью cpp


Я хочу узнать, подключен ли USB или нет.Мне это нужно в условии if в C++

если ()
//USB подключен
еще
//USB не подключен

Не могли бы вы сказать мне, пожалуйста, решение

Что я уже пробовал:

-----------------------------------------------------------------------------

1 Ответов

Рейтинг:
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-накопители (устройства хранения данных). Таким образом, вы должны искать устройства хранения данных, монтировать их (если это не делается автоматически при вставке) и проверять, соответствует ли структура каталогов.

Любое другое:
Вы должны найти способ, чтобы идентифицировать его.