C - pcap_findalldevs显示所有界面陷入死循环
C - pcap_findalldevs to display all interfaces is stuck in an infinite loop
我在 C 中使用 pcap 库工作,我正在尝试创建一个函数来打印所有接口。
为此,我正在使用 pcap_findalldevs 函数,但是当我尝试在 for 循环中打印名称和描述时,打印将永远进行并且只打印 "any" 作为名称和 "Pseudo-device that captures on all interfaces" 的描述。
代码:
char errbuff[PCAP_ERRBUF_SIZE];
pcap_if_t *interface_list;
if(pcap_findalldevs(&interface_list, errbuff) == PCAP_ERROR){
fprintf(stderr, "Could not list all interfaces: %s", errbuff);
return ERR;
}
pcap_if_t *interface;
for(interface = interface_list; interface != NULL; interface = interface_list->next){
printf("Name: %s (%s)\n",
interface->name, interface->description);
}
pcap_freealldevs(interface_list);
是否有我忽略的错误,或者这是完全错误的?
在您的 "for" 指令中,您使用 "interface_list" 而不是 "interface" 变量来访问 "next" 字段。
正确的用法应该是"for(interface = interface_list; interface != NULL; interface = interface->next){"
我在 C 中使用 pcap 库工作,我正在尝试创建一个函数来打印所有接口。
为此,我正在使用 pcap_findalldevs 函数,但是当我尝试在 for 循环中打印名称和描述时,打印将永远进行并且只打印 "any" 作为名称和 "Pseudo-device that captures on all interfaces" 的描述。
代码:
char errbuff[PCAP_ERRBUF_SIZE];
pcap_if_t *interface_list;
if(pcap_findalldevs(&interface_list, errbuff) == PCAP_ERROR){
fprintf(stderr, "Could not list all interfaces: %s", errbuff);
return ERR;
}
pcap_if_t *interface;
for(interface = interface_list; interface != NULL; interface = interface_list->next){
printf("Name: %s (%s)\n",
interface->name, interface->description);
}
pcap_freealldevs(interface_list);
是否有我忽略的错误,或者这是完全错误的?
在您的 "for" 指令中,您使用 "interface_list" 而不是 "interface" 变量来访问 "next" 字段。
正确的用法应该是"for(interface = interface_list; interface != NULL; interface = interface->next){"