gpt4 book ai didi

c - getnameinfo——在 Linux 中它的系统调用是什么?

转载 作者:太空狗 更新时间:2023-10-29 11:50:04 24 4
gpt4 key购买 nike

有一个函数 https://linux.die.net/man/3/getnameinfo我怎么知道它的系统调用是什么? Linux 系统调用表中没有这样的函数。还是仅存在于该 C 库中?

最佳答案

getnameinfo 没有直接的系统调用。它是一个库函数,执行许多事件来满足请求。例如,在查找主机名时,它可能会尝试:

  • 查阅本地文件(例如/etc/nsswitch.conf/etc/hosts)
  • 找到其 DNS 服务器的 IP 地址(阅读 /etc/resolv.conf)
  • 使用 DNS 协议(protocol)执行套接字写入和读取以请求主机名

如果您正确地使用 getnameinfo API 编写了一个简单的应用程序,您就可以使用 strace 实用程序找出正在使用的系统调用。会有很多额外的信息,但是如果你仔细研究它,你会看到相关的调用。我系统上的几行相关输出:

...
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
...
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
...
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 16) = 0
...

关于c - getnameinfo——在 Linux 中它的系统调用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41735653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com