在 Linux 上以编程方式设置 DNS 名称服务器

发布于 2024-10-17 16:26:30 字数 251 浏览 9 评论 0原文

我希望能够通过我的 C/C++ 程序为 Linux 上的 DNS 名称服务器添加 IP 地址。我在一个带有只读 /etc/resolv.conf 的嵌入式平台上。这意味着我不能简单地将“nameserver xxx.xxx.xxx.xxx”行添加到文件中而不需要一点技巧。有没有什么干净的方法可以从代码中做到这一点?

我可以尝试将 /etc/resolv.conf 符号链接到 tmpfs 中的文件,但这看起来很黑客,而且感觉像是我应该能够在不写入文件的情况下完成的事情。

I'd like to be able to add IP addresses for DNS nameservers on Linux from my C/C++ program. I'm on a somewhat embedded platform with a read-only /etc/resolv.conf. This means I can't simply add a "nameserver xxx.xxx.xxx.xxx" line to the file without a little trickery. Are there any clean ways to do this from code?

I could try symlinking /etc/resolv.conf to a file in tmpfs, but that seems hackish and it feels like something I should be able to do without writing to a file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟酉 2024-10-24 16:26:30

看看 resolv.conf 来自您的 libc。

这个问题说:

虽然没有记录,但设置所用解析器的常见方法是更新 _res.nsaddr_list

在 uClibc 0.9.31 中,具体有一个 resolv.c 中的第 533 行 上添加注释,描述其工作原理。

Have a look at nsaddr_list in resolv.conf from your libc.

This question says:

Although not documented, the common way to set the resolver used is to update _res.nsaddr_list.

In uClibc 0.9.31 specifically there is a comment on line 533 in resolv.c describing how this works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文