소스 파일 <div>------------------------------------------------------------------------------------------------------------</div> <div><div>#include <netdb.h></div> <div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div>#include <string.h></div> <div><br></div> <div>int main(int argc, char* argv[])</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>struct hostent *hp;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>struct in_addr in;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int i;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char buf[20];</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("No error1\n");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>hp = gethostbyname(argv[1]);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(hp = NULL)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("gethostbyname fail \n");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>exit(0);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("호스트 이름 : %s \n", hp->h_name);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("호스트 주소타입 번호 : %d \n", hp->h_addrtype);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("호스트 주소의 길이 : %d \n", hp->h_length);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(i=0;hp->h_addr_list[i];i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>memcpy(&in.s_addr, hp->h_addr_list[i], sizeof(in.s_addr));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>inet_ntop(AF_INET, &in, buf, sizeof(buf));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("IP주소(%d번째) : %s \n", i+1, buf);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>for(i=0;hp->h_aliases[i];i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("호스트 별명(%d 번째) : %s", i+1, hp->h_aliases[i])</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div> <div><br></div> <div>------------------------------------------------------------------------------------------------------------</div></div> <div><br></div> <div>리눅스 상에서 이러한 프로그램을 돌리려고 하는데 세그멘테이션 오류가 발생합니다.</div> <div>좀 더 정확히 알아보려고 printf문을 소스문 사이에 넣어서 알아본결과</div> <div>hp를 참조하려 할 때 오류가 발생하고, hp의 주소를 출력해 본 결과 nil값이 나왔습니다. (main함수로 넘겨준 argument값은
www.google.com입니다.)</div> <div>그렇다는 것은 <span style="font-size:9pt;line-height:1.5;">gethostbyname()함수가 제대로 동작이 안되었다는 것이고, </span><span style="font-size:9pt;line-height:1.5;">if(hp = NULL)이라는 조건문이...... 아......... 감사합니다.</span></div> <div><span style="font-size:9pt;line-height:1.5;">질문글 올리다가 답을 찾았습니다.</span></div>