Хотите получить список всех доступных интерфейсов в системе - PullRequest
8 голосов
/ 12 мая 2011

Я хочу получить список всех доступных интерфейсов на конкретном ПК вместе с их типами, проводными или беспроводными.В настоящее время я делаю следующее, но безуспешно: -

ioctl(sd, SIOCGIFNAME, &ifr);
strncpy(ifname,ifr.ifr_name,IFNAMSIZ);
printf("Interface name :%s\n",ifname);

Также будет хорошо, если будут доступны только имена.

Ответы [ 4 ]

20 голосов
/ 12 мая 2011

Если вы используете Ubuntu, как показывают ваши теги, вы всегда можете прочитать /proc/net/dev, в котором есть информация, которую вы ищете.

12 голосов
/ 12 мая 2011
ifconfig -a

для всех доступных списков доступных интерфейсов вам не нужен скрипт для кода C для этого,

Если вы хотите больше информации для своих интерфейсов

lspci

Выможете найти тип и модель вашего интерфейса

3 голосов
/ 27 августа 2016

Интерфейс C называется ifaddrs , вы можете включить его в:

#include <sys/types.h>
#include <ifaddrs.h>

Интересующие вас функции: getifaddrs и однажды выполненныес данными freeifaddrs.

struct ifaddrs {
    struct ifaddrs  *ifa_next;    /* Next item in list */
    char            *ifa_name;    /* Name of interface */
    unsigned int     ifa_flags;   /* Flags from SIOCGIFFLAGS */
    struct sockaddr *ifa_addr;    /* Address of interface */
    struct sockaddr *ifa_netmask; /* Netmask of interface */
    union {
        struct sockaddr *ifu_broadaddr;
                         /* Broadcast address of interface */
        struct sockaddr *ifu_dstaddr;
                         /* Point-to-point destination address */
    } ifa_ifu;
#define              ifa_broadaddr ifa_ifu.ifu_broadaddr
#define              ifa_dstaddr   ifa_ifu.ifu_dstaddr
    void            *ifa_data;    /* Address-specific data */
};

Эта структура включает всю информацию, которую возвращает инструмент командной строки ifconfig.

Для пользователей C ++ яПредлагаем вам использовать такой удалитель:

0 голосов
/ 10 марта 2019

Я просто использую эту команду для Ubuntu. Я не уверен, что эта работа для другого распределения.

ls /sys/class/net
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...