我有一个网络接口的索引我收到了一个数据包(即2),并且需要找到接口的名称,该名称应返回"eth0"
。我使用if_indextoname()
。
我对Ubuntu上的C ++不是很熟悉,但是我的代码丢失了一个错误:
无法将参数2的
char**
转换为char*
至char* if_indextoname(unsigned int, char*)
有人可以帮我解决吗?
#include <net/if.h>
#include <iostream>
int main()
{
unsigned int ifindex = 2;
char *ifname[10];
std::cout << if_indextoname(ifindex, ifname);
std::cout << ifname << std::endl;
}
答案 0 :(得分:2)
char *ifname[10];
声明了10个char指针。
我猜你需要的是一个字符指针
char* ifname = new char[IF_NAMESIZE+1]
应该可以解决您的问题。
或者,如果您不想将其传递给其他函数,则可以只分配一个自动字符缓冲区。
char ifname[IF_NAMESIZE+1]