У меня есть индекс для сетевого интерфейса, из которого я получил пакет (то есть 2), и мне нужно найти имя интерфейса, который должен вернуть "eth0"
, я использую if_indextoname()
.
Я не очень знаком с C ++ в Ubuntu, но мой код выдает ошибку:
не может конвертировать
char**
вchar*
для аргумента 2 в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;
}
char *ifname[10];
объявляет 10 символьных указателей.
Я думаю, что вам нужно, это указатель на символ.
char* ifname = new char[IF_NAMESIZE+1]
должен решить вашу проблему.
В качестве альтернативы, вы можете просто выделить автоматический буфер символов, если вы не хотите передавать его другим функциям.
char ifname[IF_NAMESIZE+1]