Obter endereços de interface de rede local usando apenas proc?
Como posso obter os endereços (IPv4) para todas as interfaces de rede usando apenas proc? Após uma extensa investigação, descobri o seguinte:
ifconfig
fazer uso deSIOCGIFADDR
, que requer soquetes abertos e conhecimento avançado de todos os nomes de interface. Também não está documentado em nenhuma página de manual no Linux.proc
contém/proc/net/dev
, mas esta é uma lista de estatísticas da interfacproc
contém/proc/net/if_inet6
, que é exatamente o que eu preciso, exceto o IPv Geralmente, as interfaces são fáceis de encontrar emproc
, mas os endereços reais são muito raramente usados, exceto quando explicitamente parte de alguma conexã Há uma chamada de sistema chamadagetifaddrs
, que é uma função "mágica" que você esperaria ver no Windows. Também é implementado no BSD. No entanto, não é muito orientado a texto, o que dificulta o uso de idiomas não-