0

我有一个程序(用 C 编写),它使用getaddrinfo()它的第一个参数是我希望它获取地址信息的主机名,假设它是“域”。在/etc/hosts同一台机器上的文件中,我可以看到“域”应该解析为 192.168.1.200。当我运行程序时,它每次都挂在这个调用上并且无法获取地址信息。但是,如果我用实际的 IP 地址替换“域”,它就可以正常工作。

顺便说一句,这个问题在一周左右之前还不存在,它是一个突然抬起丑陋脑袋的新问题。我相当肯定上周这台机器一定做了什么,我试图与我们的其他工作人员核实这一点,但他们也不知道为什么会发生这种情况。

所以,我的问题是,有没有人知道这会突然发生什么?我可以检查什么来验证它的配置是否应该是这样的?提前致谢。

4

1 回答 1

1

你在使用 Linux 吗?我的猜测是你搞砸了libnssglibc 用来路由其所有名称查找(主机名、用户名、组名等)的混乱,可能是由于 glibc 升级失败。尝试运行您的程序,strace看看它是否正在尝试(并且失败)打开libnss_*文件。还要查看/etc/nsswitch.conf以确保该hosts:行显示为hosts: files dns. man nsswitch.conf可能会有所帮助。

于 2010-11-11T23:26:32.363 回答