получить имя Ethernet, класс, описание поставщика, подсистему и т. д. с помощью c / c ++ в системах на основе Linux - PullRequest
0 голосов
/ 10 апреля 2011

Используя интерфейс ioctl, можно получить различную информацию.Как получить дополнительную информацию, такую ​​как название продукта, класс, имя поставщика, имя подсистемы и т. Д.?

Существует несколько доступных инструментов командной строки, таких как: 1. lshw -C network 2. определение ника и портовв системах, загруженных с linux

Вы можете запустить процесс и получить результат, но есть ли какой-нибудь необработанный метод c / c ++ для получения вышеуказанной информации?

Cheers

Prashant

Ответы [ 2 ]

0 голосов
/ 10 апреля 2011

Посмотрите в sysfs или procfs, к сожалению, эта информация имеет привычку изменяться и на нее нельзя положиться: (

0 голосов
/ 10 апреля 2011

Вся запрашиваемая вами информация находится в /sys/bus/pci/devices/*/*:

class
device
driver
modalias
subsystem
subsystem_device
subsystem_vendor
vendor

. Вы можете увидеть, как lspci(8) считывает файлы с strace -o /tmp/out lspci, /tmp/out будет иметь много деталей.(Я не знаю простого способа ограничить это просто сетевыми картами; я думаю, что и lspci(8) , и ядро ​​имеют жестко закодированные списки PCI ID -> сопоставления имен.)

...