当前位置: 技术问答>linux和unix
程序中使用gethostbyname出现段错误
来源: 互联网 发布时间:2016-01-17
本文导语: 我在程序中用到gethostbyname,出现段错误,请大家帮忙看看。 我的代码: char *hostname2ip(const char *host) { struct hostent *hp; hp = gethostbyname(host); if(hp) return ( inet_ntoa( *(struct in_addr *)hp->h_addr_list[0]...
我在程序中用到gethostbyname,出现段错误,请大家帮忙看看。
我的代码:
char *hostname2ip(const char *host)
{
struct hostent *hp;
hp = gethostbyname(host);
if(hp)
return ( inet_ntoa( *(struct in_addr *)hp->h_addr_list[0]));
else
return NULL;
}
外部调用时,传入的参数host为“http://www.afrsmartinvestor.com.au”.
调试信息如下:
gethostbyname() from /lib/tls/libc.so.6
nss hostname digits dots() from /lib/tls/libc.so.6
__res_ninit() from /lib/tls/libc.so.6
__res_vinit() from /lib/tls/libc.so.6
fopen@@GLIBC_2.1() from /lib/tls/libc.so.6
__fopen_internal() from /lib/tls/libc.so.6
malloc() from /lib/tls/libc.so.6
_int_malloc() from /lib/tls/libc.so.6
我的代码:
char *hostname2ip(const char *host)
{
struct hostent *hp;
hp = gethostbyname(host);
if(hp)
return ( inet_ntoa( *(struct in_addr *)hp->h_addr_list[0]));
else
return NULL;
}
外部调用时,传入的参数host为“http://www.afrsmartinvestor.com.au”.
调试信息如下:
gethostbyname() from /lib/tls/libc.so.6
nss hostname digits dots() from /lib/tls/libc.so.6
__res_ninit() from /lib/tls/libc.so.6
__res_vinit() from /lib/tls/libc.so.6
fopen@@GLIBC_2.1() from /lib/tls/libc.so.6
__fopen_internal() from /lib/tls/libc.so.6
malloc() from /lib/tls/libc.so.6
_int_malloc() from /lib/tls/libc.so.6
|
不要输入 "http://" 试试,另外,你代码不完整,不知道怎么分析,gdb的信息并不是说 gethostbyname 有问题,你最好打断点跟一下看看