getaddrinfo函数返回No such file or directory的分析
在项目中实现NTP功能模块时,为了更好的兼容和更小的警告,将gethostbyname函数用getaddrinfo函数进行了替代,可是在开发板上运行时却遇到了这个错误: getaddrinfo fail for host time.windows.com:System error error:No such file or directory 然而同样的代码程序在PC上运行是正确的。可以确定是开发板上的文件系统环境缺少某个与网络相关的配置文件导致getaddrinfo系统调用执行失败,问题在于是哪一个文件,怎么来找到它?答案是使用strace工具在追踪getaddrinfo在PC上执行是的文件访问记录,从而找出缺少的配置文件。 为了减少干扰,使用一个简单的test程序来进行分析,使用如下命令得到追踪记录: # strace -e trace=file -o 2.strace ./test_getaddrinfo 追踪记录文件信息如下(为了保持strace文件的语法高亮,这里使用图片): 滤掉程序执行涉及的动态库链接缓存之类的文件(因为程序运行起来了),就只剩下三个文件了:/etc/host.conf /etc/hosts /etc/resolv.conf. /etc/resolv.conf文件是域名解析服务器列表的参数文件,实现域名解析,必须设置域名服务器的地址,开发板上已经配置了