0

我有一个网络接口的索引,我从(即 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;
}
4

1 回答 1

2

char *ifname[10];声明 10 个字符指针。

我想你需要的是一个 char 指针。
char* ifname = new char[IF_NAMESIZE+1]应该可以解决您的问题。

或者,如果您不想将其传递给其他函数,则可以只分配一个自动字符缓冲区。

char ifname[IF_NAMESIZE+1]

于 2014-06-08T17:44:37.467 回答