getaddrinfo()连续失败,EAI_AGAIN
getaddrinfo() fails continuously with EAI_AGAIN
在我的代码中,我使用的代码如下。
do
{
r = getaddrinfo(host, service, &hints, ret);
}
while (r == EAI_AGAIN);
当测试getaddrinfo()持续失败时,循环不会正确终止。
你认为有什么方法可以改进代码吗?我们可以用计数器来计算它应该循环的次数吗?
另外,请让我知道getaddrinfo()调用返回"EAI_AGAIN"的所有原因。
无可否认,这是一个疯狂的猜测。
我们在一个稍显不足的单核嵌入式系统上也看到了这一点。
我假设(在我们的例子中,dnsmasq)是在一个单独的进程中运行的,无论出于什么原因(可能是因为我们在追逐尾巴的圈子里跑来跑去),它都没有足够的资源(cpu/ram/…)来完成它的工作。
对解决方案的一个疯狂猜测可能是在这个紧张的循环中休眠,让DNS缓存魔法般地利用它所需的资源来完成它的工作。
我会让你知道它是否有效。