Как я могу получить адреса (IPv4) для всех сетевых интерфейсов, используя только proc ? После обширного исследования я обнаружил следующее:
ifconfig
использует SIOCGIFADDR
, который требует открытых сокетов и предварительных знаний всех имен интерфейсов. Это также не задокументировано ни на одной странице руководства по Linux. proc
содержит / proc / net / dev
, но это список статистики интерфейса. proc
содержит / proc / net / if_inet6
, что именно то, что мне нужно, но для IPv6. proc
, но фактические адреса используются очень редко, за исключением тех случаев, когда они явно являются частью какого-либо соединения. getifaddrs
, который является очень «волшебной» функцией, которую вы ожидаете увидеть в Windows. Это также реализовано в BSD. Однако он не очень ориентирован на текст, что затрудняет использование языков, отличных от C.