在Linux开发中可能会遇到需要对网络接口的处理,此时就需要获取主机上所有的接口名,为了方便获取可以采用if_nameindex函数即可得到每个接口的接口名和接口索引号,需要包含net/if.h头文件。同时为了方便处理接口,将接口名通过if_info结构体存储,通过一个结构体数组存储主机所有接口的接口名(当然除环回接口以外)。本文写了一个获取接口名的例子,希望大佬们多指教。。。。。。
/*interface name */
typedef struct if_info
{
char if_name[10];
}if_info;
static if_info* get_ifname(int *count)
{
if_info* info_arr=(if_info*)malloc(10*sizeof(if_info));
int n=0;
struct if_nameindex *head, *ifni;
ifni = if_nameindex();
head = ifni;
if (head == NULL)
{
perror("if_nameindex()");
exit(EXIT_FAILURE);
}
while (ifni->if_index != 0)
{
if (strncmp(ifni->if_name, "lo", 2))
{
strcpy(info_arr[n].if_name, ifni->if_name);
n++;
}
ifni++;
}
if_freenameindex(head);
head = NULL;
ifni = NULL;
*count=n;
return info_arr;
}