我正在尝试以编程方式查找 Infiniband 接口的 inet 地址,该接口的名称不知道先验。
我在 Linux 上,我想避免解析ifconfig (8)
输出。我已经阅读了关于这个答案的第二条评论,它建议用来getifaddrs()
检索接口,但是我不能选择 Infiniband 一个。
非常感谢任何帮助。
我正在尝试以编程方式查找 Infiniband 接口的 inet 地址,该接口的名称不知道先验。
我在 Linux 上,我想避免解析ifconfig (8)
输出。我已经阅读了关于这个答案的第二条评论,它建议用来getifaddrs()
检索接口,但是我不能选择 Infiniband 一个。
非常感谢任何帮助。
getifaddrs()
为每个接口返回一个类型条目AF_PACKET
,其中包含硬件地址详细信息,如本答案中所述。特别是,iface->ifa_addr
保存 a struct sockaddr_ll
,并且该sll_hatype
结构的成员保存硬件地址类型。因此,要确定哪些接口是 IPoIB,您只需检查哪些接口具有硬件类型ARPHRD_INFINIBAND
。
/proc/net/
您可以尝试在like /proc/net/if_inet6
&下解析一些文件/proc/net/dev
。ifconfig
你可以通过strace
-ing来了解它的作用。