Salut a tous,
Voila, j'ai un bout de code tout simple qui fait une simple résolution d'adresse:
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <errno.h>
#include <sys/types.h>
#include <netinet/in.h>
int main (int argc, char *argv[]) {
struct hostent *host1;
struct in_addr *addr1;
if (argc != 2) {
fprintf (stderr, "usage: get_ip adresse\n");
exit (1); }
if ((host1=gethostbyname(argv[1])) == NULL) {
herror ("gethostbyname");
exit (1); }
addr1=(struct in_addr *)host1->h_addr;
printf ("Hostname : %s\n",host1->h_name);
printf ("IP: %s\n", inet_ntoa(addr1->s_addr));
return 0;
}
Le problème assez etrange est que, lorsque je le compile et l'excute sous gentoo, ce code segfault :
$ gcc get_ip.c -o get_ip -lnsl
$ ./get_ip www.google.fr
Hostname : www.l.google.com
Erreur de segmentation
_Mais_ le meme code sous solaris compilé exactement de la meme facon fonctionne tres bien :
psun1 ~ $ gcc get_ip.c -o get_ip -lnsl
psun1 ~ $ ./get_ip www.google.Fr
Hostname : www.l.google.com
IP: 209.85.129.104
si quelqu'un a une explication a ce phénomene... je suis preneur ?-(
Poste le Friday 7 September 2007 23:02:30