我正在使用libresolv库来创建一个应用程序,该应用程序将命令行参数中的DNS服务器名称和查询主机名称提供给此特定DNS服务器 .

_res.nsaddr_list[0].sin_family = AF_INET;
_res.nsaddr_list[0].sin_addr.s_addr = inet_addr(argv[2]);
_res.nsaddr_list[0].sin_port = htons(NS_PORT);
_res.nscount = 1;
res_init ();

l = res_query(argv[1], ns_c_any, ns_t_a, nsbuf, sizeof(nsbuf));

这适用于本地DNS服务器(如果使用) . 但是当我尝试传递8.8.8.8(谷歌名称服务器)时,res_query总是返回-1 . 我在网上搜索了类似的东西,发现res_init加载了/etc/resolv.conf . 我不愿意 . 我想覆盖resolv.conf并告诉解析器使用用户输入的名称服务器 . (谷歌服务器失败)