gethostbyname
在Fedora 32位工作正常,但在64位環境中失敗給出分段錯誤?在這種情況下,什麼是問題,我們如何解決它?gethostbyname在fedora 32位工作正常,但在64位失敗
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
struct hostent *he;
struct in_addr a;
int main (int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: %s hostname\n", argv[0]);
return 1;
}
he = gethostbyname (argv[1]);
if (he) {
printf("name :- %s\n", he->h_name);
while (*he->h_aliases)
printf("alias:- %s\n", *he->h_aliases++);
while (*he->h_addr_list) {
bcopy(*he->h_addr_list++, (char *) &a, sizeof(a));
printf("address:- %s\n", inet_ntoa(a));
}
}
else
herror(argv[0]);
return 0;
}
向我們顯示代碼。 – unwind 2012-07-19 13:02:20
這意味着你在代碼的某個地方犯了一個錯誤。 – SLaks 2012-07-19 13:02:41
很可能,您提供給'gethostbyname'的名稱已損壞。也許你已經將它存儲在一個整數中並丟失了高位。無論如何,問題出在你的代碼中,而不是'gethostbyname'。 – ugoren 2012-07-19 13:05:22