getaddrinfo()连续失败,EAI_AGAIN

getaddrinfo() fails continuously with EAI_AGAIN

本文关键字:EAI AGAIN 失败 连续 getaddrinfo      更新时间:2023-10-16

在我的代码中,我使用的代码如下。

do
{
    r = getaddrinfo(host, service, &hints, ret);
}
while (r == EAI_AGAIN);

当测试getaddrinfo()持续失败时,循环不会正确终止。

你认为有什么方法可以改进代码吗?我们可以用计数器来计算它应该循环的次数吗?

另外,请让我知道getaddrinfo()调用返回"EAI_AGAIN"的所有原因。

无可否认,这是一个疯狂的猜测。

我们在一个稍显不足的单核嵌入式系统上也看到了这一点。

我假设(在我们的例子中,dnsmasq)是在一个单独的进程中运行的,无论出于什么原因(可能是因为我们在追逐尾巴的圈子里跑来跑去),它都没有足够的资源(cpu/ram/…)来完成它的工作。

对解决方案的一个疯狂猜测可能是在这个紧张的循环中休眠,让DNS缓存魔法般地利用它所需的资源来完成它的工作。

我会让你知道它是否有效。