How can I obtain the (IPv4) addresses for all network interfaces using only 100?经过广泛的调查,我发现:
-
ifconfig
使用SIOCGIFADDR
,这需要打开套接字并提前了解所有接口名称.在Linux上的任何手册页面中也没有记录. -
proc
包含/proc/net/dev
,但这是一个接口统计信息列表. -
proc
包含/proc/net/if_inet6
,这正是我所需要的,但对于IPv6. - 一般来说,在
proc
中很容易找到接口,但实际地址很少使用,除非明确地是某些连接的一部分. - 有一个名为
getifaddrs
的系统调用,这是一个非常"神奇"的功能,你可以在Windows中看到.它也在BSD上实现.然而,它不是非常面向文本的,这使得它很难从非C语言中使用.