Одним из способов решения подобных проблем, особенно в тех случаях, когда у вас нет источника, является strace .
. Это дает вам список всей системы.вызовы, сделанные любой программой, которую вы передаете, вместе с их аргументами и возвращаемыми значениями.Если ваша программа просто выводит некоторую информацию и завершает свою работу, а не работает в течение продолжительного времени, может быть довольно просто просто выполнить команду man на всех системных вызовах, которые вы видите, которые выглядят так, как будто они могут предоставить информацию, которую вы ищете.
Когда я запускаю
strace ifconfig
Вот некоторые из интересных вызовов:
open("/proc/net/dev", O_RDONLY) = 6
, за которыми следует куча ioctls, подтверждающих ответ @ payne:
ioctl(5, SIOCGIFFLAGS, {ifr_name="eth0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0
ioctl(5, SIOCGIFHWADDR, {ifr_name="eth0", ifr_hwaddr=84:2b:2b:b7:9e:6d}) = 0
ioctl(5, SIOCGIFMETRIC, {ifr_name="eth0", ifr_metric=0}) = 0
ioctl(5, SIOCGIFMTU, {ifr_name="eth0", ifr_mtu=1500}) = 0