当前位置:  开发笔记 > 运维 > 正文

使用glibc,为什么我的gethostbyname在I/DHCP更改DNS服务器后失败?

如何解决《使用glibc,为什么我的gethostbyname在I/DHCP更改DNS服务器后失败?》经验,为你挑选了1个好方法。

如果我们的服务器(在设备上运行)在获取DHCP租约之前启动,那么它永远不能使用主机名进行连接.

如果发生这种情况,它可以按IP地址查找主机,但不能通过DNS查找.

我最初认为卷曲DNS缓存因卷曲连接失败而出错.但我使用CURLOPT_DNS_CACHE_TIMEOUT来防止curl缓存地址,但连接仍然失败.



1> mat_geek..:

事实证明,如果配置发生变化,glibc gethostbyname_r将不会自动重新加载它的配置.您必须手动调用res_init.查看错误报告下面的

注意:gethostbyname_r的手册页和rer_init都没有提到此限制.

我的解决方案非常具体.它适用于我们长期运行的服务器,但它不是我理想的解决方案.

我有一个函数,它检查/etc/resolv.conf的mtime与最后一次已知的mtime(DNE为0).如果两个mtime不同,那么我调用res_init.在程序启动时调用此函数,然后定期重新加载配置.


glibc 错误报告

libc永远缓存resolv.conf

...

这就是res_init()的用途,请调用它.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有