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