【问题标题】:How to retrieve eth0 id programmatically如何以编程方式检索 eth0 id
【发布时间】:2014-08-25 11:51:49
【问题描述】:

当我给 /sbin/ip addr show 在我的 Linux 机器上。我得到如下输出

3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:00:21:02:16:6b brd ff:ff:ff:ff:ff:ff .. so on

如何在 C 或 CPP 中以编程方式检索 eth0 的上述 id 3。

【问题讨论】:

  • 您可以使用popen 命令并存储它的结果。
  • 为什么需要3?通常最好通过名称来引用接口(@98​​7654327@)
  • 为什么他的票数这么低?看起来很普通的问题
  • 我同意@AndreHolzner,你为什么要数字身份证号码? AFAIK,那个号码对你没用。

标签: c++ c unix ipv6


【解决方案1】:

使用if_nametoindex() 函数。

unsigned int idx = if_nametoindex("eth0");
if (idx == 0) {
    perror("if_nametoindex");
 }

【讨论】:

  • 在实际代码中,您应该更智能地处理 ENXIO :)
【解决方案2】:

用于处理网络接口的标准 linux c 库是 getifaddrs

您可以从 getifaddrs 获取现有接口的链接列表并计算它们,直到找到您要查找的接口。

除此之外,您还不清楚为什么需要那个号码(我得到了XY problem 的预感)。我这么说是因为操作系统的接口名称不同。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 2014-11-04
    • 1970-01-01
    • 2012-11-01
    • 2012-01-30
    • 2014-02-07
    • 1970-01-01
    • 2012-11-23
    相关资源
    最近更新 更多