Пытаюсь написать компонент, собирающий данные о подключенных / подключенных устройствах.
Мой компонент должен работать как в Linux, так и в Windows. На данный момент мне удалось сделать это на машинах с Windows, запросив Win32_PnPEntity.
Я ищу способ программно собирать данные обо всех подключенных устройствах (например, USB-устройствах, дисках, Bluetooth и т. д.) В Linux.
После поиска в Интернете, Я не нашел никакого решения, чтобы получить всю эту информацию.
Как я уже сказал, в Windows я могу запросить Win32_pnpentity, Есть ли способ сделать то же самое в Linux? (Я предпочитаю не использовать утилиты, такие как lshw и т. д...)
Спасибо, Амит.
Для этого нет единого призыва. Чтобы узнать больше, посмотрите исходники инструмента lshw.





libusb предлагает примеры / listdevs.c, и этот код должен одинаково хорошо работать в Windows и Linux.
Как вариант, можно просто покопаться в /sys/bus/usb/devices. Например, записи типа 1-2, 1-4 (цифра, тире и цифра) представляют все подключенные устройства, и эти каталоги содержат файлы manufacturer и product, представляющие устройство.
Я бы использовал подход libusb для всего, что хотел бы широко распространить. Если вы делаете код, принадлежащий компании, то подход каталогов должен работать хорошо. Изменения в интерфейсе должны быть небольшими и редкими.
Вы можете либо использовать libusb, чтобы получить кроссплатформенный интерфейс, который одинаково хорошо работает в Windows и Linux, либо отправиться на рыбалку в
/sys/bus/usb.