[ CnUnix ] in KIDS 글 쓴 이(By): ymir (Mizz) 날 짜 (Date): 2004년 11월 22일 월요일 오후 01시 48분 01초 제 목(Title): [Q] Network interface name 알아오기.. 네트워크 인터페이스 이름을 알아 오기 위해.. 스티븐슨 아저씨꺼 소스를 사용했는데.. Tru64 에서는 ioctl() 이 EFAULT 를 리턴하는군요.. ;; Solaris, HPUX, AIX, Linux 에서는 모두 동작하고.. Tru64 에서도 테스트 코드는 동작하는데... 제 데몬 프로그램에 모듈로 추가해서 호출 하면... 여지없이 EFAULT ... 심지어 테스트 데몬 프로그램을 만들어서... 콜해도.. 정상적으로 동작하는데... 제 프로그램에 추가해서 호출하면 얄짤 없더군요.. ㅡㅡ;; 혹시 이와 유사한 사례를 보셨거나.. 체크해 볼 만한 내용이 있으시면 조언 부탁드리겠습니다.. 밑에 코드 첨부합니다. 이 함수의 파라미터는 없고.. 모두 로컬 변수 사용합니다. <snip> fd = socket(AF_INET, SOCK_DGRAM, 0); memset(&ifcfg, 0x00, sizeof(struct ifreq)); len = sizeof(struct ifreq) * numreqs; lastlen = 0; for(;;) { ifcfg.ifc_buf = malloc(ifcfg.ifc_len); ifcfg.ifc_len = len; if(ioctl(fd, SIOCGIFCONF, (char *)&ifcfg) < 0) { do_log("IF_LIST", "ioctl() fail - [errno = %d]\n.", errno); if ((errno != EINVAL) || (lastlen != 0)) { ret = FALSE; break; } } else { if (ifcfg.ifc_len == lastlen) { ret = TRUE; break; } lastlen = ifcfg.ifc_len; } len += 10 * sizeof(struct ifreq); /* increment */ free(ifcfg.ifc_buf); ifcfg.ifc_buf = NULL; } </snip> Oh, I do believe everlasting love and destiny to meet you again I feel a pain I can hardly stand all I can do is loving you - *Mizz* the Magic Knight! |