除了getdomainname()以外,还有什么方法可以在Linux上获取域名而不必在/etc中打开和解析文件?
代码受到赞赏。
谢谢
最佳答案
请尝试以下操作:
#include <string.h>
#include <netdb.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char hn[254];
char *dn;
struct hostent *hp;
gethostname(hn, 254);
hp = gethostbyname(hn);
dn = strchr(hp->h_name, '.');
if ( dn != NULL ) {
printf("%s\n", ++dn);
}
else {
printf("No domain name available through gethostbyname().\n");
}
return 0;
}
似乎getdomainname()只会告诉您可能未设置的NIS或YP域名。另一方面,使用gethostbyname()查询完整的主机名会检查各种不同的来源(包括DNS和/etc/hosts)以确定您的规范主机名。
关于c - 在Linux中获取域名(C编程),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1663953/