我试图以ANSI C(Linux)编程方式自动检索主机的本地域后缀。例如:我的机器是ironside.0ffnet.net,我想检索“0ffnet.net”。
我看到了很多帖子都在使用getnameinfo()和getaddrinfo()解决此问题,但似乎这些函数会从/etc/hosts文件中拉取任何本地接口地址的信息。
如果我的机器通过DHCP分配地址(和相应的域后缀),则/etc/hosts文件不会得到更新,而是将此信息存储在/etc/resolv.conf中,例如:
dfex@ironside:~/hush$cat /etc/resolv.conf
domain 0ffnet.net
search 0ffnet.net
nameserver 139.130.4.4
因此,getnameinfo()和getaddrinfo()只返回机器的主机名,不带后缀,使用/etc/hosts信息,其格式如下:
dfex@ironside:~/hush$ cat /etc/hosts
::1 ironside localhost6.localdomain6 localhost6
127.0.1.1 ironside
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
有没有一种函数可以在不使用system()调用的情况下提取这些信息?我一直在阅读Beej指南,但没有太大的进展。