簡體   English   中英

getnameinfo —在Linux中對它的系統調用是什么?

[英]getnameinfo — what's syscall for it in Linux?

有一個功能https://linux.die.net/man/3/getnameinfo我怎么知道它的系統調用是什么? Linux syscall表中沒有這樣的功能。 還是僅存在於該C庫中?

getnameinfo沒有直接的系統調用。 它是一個庫函數,它執行許多活動來滿足請求。 例如,當查找主機名時,它可能會嘗試:

  • 查閱本地文件(例如/etc/nsswitch.conf/etc/hosts
  • 查找其DNS服務器的IP地址(讀取/etc/resolv.conf
  • 使用DNS協議執行套接字寫入和讀取以詢問主機名

如果正確使用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
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM