有一個功能https://linux.die.net/man/3/getnameinfo我如何知道它的系統調用是什麼? Linux系統調用表中沒有這樣的功能。或者只存在於該C庫中?getnameinfo - 它在Linux中的系統調用是什麼?
2
A
回答
3
getnameinfo
沒有直接的系統調用。這是一個庫函數,它執行許多活動來完成請求。例如,查找主機名時,它可能會嘗試:
- 諮詢本地文件(如和
/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
...
相關問題
- 1. 是什麼F_DUPFD內的fcntl在Linux系統調用使用
- 2. 什麼是系統調用?
- 3. Linux中「times」系統調用的返回值是什麼
- 4. Linux reboot()系統調用:爲什麼它在kernel_halt()之後調用do_exit(0)?
- 5. 在Linux中使用什麼系統調用來複制文件
- 6. 什麼是JNI調用的android系統
- 7. sys_vm86old系統調用是做什麼的?
- 8. Linux系統調用
- 9. 系統linux API究竟是什麼?
- 10. 爲什麼amd64 linux中的系統調用號碼不同?
- 11. 我怎麼攔截linux系統調用?
- 12. linux系統中使用的for_each_zone在新系統調用中調用
- 13. 在Linux中創建系統調用
- 14. 什麼是_nocancel()系統調用在Linux和有使用LD_PRELOAD去攔截
- 15. 系統在以下程序中調用的是什麼?
- 16. linux系統調用getpeername C++
- 17. linux系統調用執行
- 18. 開放系統調用 - Linux
- 19. Linux系統調用誰
- 20. nasm系統調用Linux
- 21. Linux阻止系統調用
- 22. Linux系統調用getifaddr C++
- 23. 宏+ Linux系統調用(NASM)
- 24. Linux內核中的系統調用
- 25. linux中的fork()系統調用
- 26. Python的系統調用,在Windows和Linux
- 27. 在Linux的NFS掛載系統調用
- 28. 在Linux系統()調用的問題
- 29. 用c編寫的窗口中的系統調用是什麼?
- 30. x86-64(linux)上的GUI編程相關的系統調用是什麼?
本手冊的第3部分表明它不是系統調用。第2部分用於系統調用,第3部分用於C庫函數。 –
@RossRidge,這是一個約定嗎?第1部分是什麼? – Kooiomo
'man man'列出了部分,1是「可執行程序或shell命令」 – TrentP