作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
while(do_again) {
rc = gethostbyname_r(host, &hbuf, tmp, TMPLEN, &hp, &my_h_errno);
if (rc != 0) {
if(my_h_errno == TRY_AGAIN) {
printf("HOST NOT FOUND: got a TRY_AGAIN response from gethostbyname_r()\n");
continue;
} else if (my_h_errno == HOST_NOT_FOUND) {
printf("HOST NOT FOUND: Got an authoritative answer\n");
exit(0);
} else {
printf("Other errors..\n");
exit(0);
}
}
do_again = false;
}
上面的代码总是返回
my_h_errno
设置为
TRY_AGAIN
用于 Ubuntu 19.04 和 20.04 上不可解析的主机名。在以前版本的操作系统或其他 Linux 风格上,它通常返回更权威的版本,
HOST_NOT_FOUND
.
gethostbyname_r
) 究竟是如何工作的?最新版本的 Ubuntu 上的 dns 或查找机制是否有任何变化导致这种行为?
最佳答案
[更新]
安装 libnss-myhostname 作为主机名解析的后备机制,解决了这个问题。
对 glibc 代码的调试使我达到了调用上述库函数(如果存在)的地步,其中 h_errno 设置为 HOST_NOT_FOUND 用于不可解析的主机。对于这种情况,最初在 glibc 的 gethostbyname_r 功能中将其设置为 TRY_AGAIN。
关于linux - gethostbyname_r() 调用始终返回的不可解析主机,并将 h_errnop 设置为 TRY_AGAIN(在 Ubuntu 19.04 和 20.04 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64252437/
while(do_again) { rc = gethostbyname_r(host, &hbuf, tmp, TMPLEN, &hp, &my_h_errno); if
我是一名优秀的程序员,十分优秀!