我有一个使用getaddrinfo()
的程序(用C编写),它的第一个参数是我希望它获取地址信息的主机名,假设它是“域”。在同一台机器上的/etc/hosts
文件中,我可以看到“域”应该解析为192.168.1.200。当我运行程序时,它每次都挂起这个调用,无法获取地址信息。但是,如果我用实际的IP地址替换“域”,它就可以正常工作。
顺便说一句,这个问题在大约一周前不存在,这是一个突然出现问题的新问题。我相当肯定在上周必须对这台机器做些什么,我试图与其他员工核实这一点,但他们也不知道为什么会这样。
所以,我的问题是,有没有人知道这会突然发生什么?我可以检查什么来验证它是如何配置的?提前谢谢。
答案 0 :(得分:1)
您使用的是Linux吗?我的猜测是你搞砸了glibc使用libnss
混乱的东西来路由它的所有名称查找(主机名,用户名,组名等),也许是通过拙劣的glibc升级。尝试使用strace
运行程序,看看它是否正在尝试(并且失败)打开libnss_*
个文件。另请查看/etc/nsswitch.conf
以确保hosts:
行读取hosts: files dns
。 man nsswitch.conf
可能会有所帮助。