一尘不染

Linux获取所有网络接口名称

linux

我需要收集所有接口名称,即使是目前还没有使用的接口名称。喜欢ifconfig -a

getifaddrs()多次遍历同一接口名称。如何使用一次收集所有接口名称getifaddrs()


阅读 1311

收藏
2020-06-02

共1个答案

一尘不染

您可以检查getifaddrs中的哪些条目属于AF_PACKET系列。在我的系统上,似乎列出了所有接口:

struct ifaddrs *addrs,*tmp;

getifaddrs(&addrs);
tmp = addrs;

while (tmp)
{
    if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_PACKET)
        printf("%s\n", tmp->ifa_name);

    tmp = tmp->ifa_next;
}

freeifaddrs(addrs);
2020-06-02