Это происходит потому, что в большинстве дистрибутивов это есть в /etc/hosts
:
127.0.0.1 localhost.localdomain localhost aiur
gethostbyname
просто разрешает имя хоста (aiure
в этом примере) в адрес.Если он найдет его в /etc/hosts
, он более чем счастлив дать вам это.
Вернуться к вопросу.К сожалению, я не верю, что вы можете получить все адреса вашей машины в портативном виде.Вы можете сделать это Unix-переносимым способом, как ifconfig
.Откройте сокет s
и выполните ioctl(..., SIOCGIFCONF, ...)
.
Кстати, gethostbyname
устарел , если вы считаете, что kernel.org и устарел , если выверю MSDN.