我正在尝试以编程方式查找 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来了解它的作用。