gpt4 book ai didi

C getaddrinfo() 无法解析名称

转载 作者:行者123 更新时间:2023-11-30 16:03:26 27 4
gpt4 key购买 nike

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

顺便说一句,这个问题大约一周前还不存在,这是一个突然出现的新问题。我相当确定上周一定对这台机器进行了某些操作,并且我已尝试与我们的其他员工验证这一点,但他们也不知道为什么会发生这种情况。

所以,我的问题是,有人知道这会突然发生什么吗?我可以检查什么来验证其配置是否正确?提前致谢。

最佳答案

你使用的是Linux吗?我的猜测是,你搞砸了 glibc 用来路由所有名称查找(主机名、用户名、组名等)的 libnss 困惑,可能是由于 glibc 升级失败所致。尝试使用 strace 运行您的程序,看看它是否尝试(并失败)打开 libnss_* 文件。另请查看 /etc/nsswitch.conf 以确保 hosts: 行读取 hosts: files dnsman nsswitch.conf 可能会有所帮助。

关于C getaddrinfo() 无法解析名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4160055/

27 4 0