除了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/

10-11 17:44