2013-06-26 4 views
1

내 컴퓨터 (OSx 10.8)의 모든 네트워크 어댑터를 검색하려고합니다. 그래서 코드의이 작은, 전형적인 조각이 : pcap_if_t가 비어과 errbuf뿐만 아니라 분명하다 libpcap - pcap_findalldevs가 MacOSx에서 NULL을 반환합니다.

int main() 
{ 
    pcap_if_t *alldevs; 
    char errbuf[PCAP_ERRBUF_SIZE]; 

    pcap_findalldevs(&alldevs, errbuf); 
... 
} 

나는이 링크 된 목록 실행

. 이 권한 문제가 될 수 있습니까? 이 경우에 errbuf에 쓰여지는 것을 기대할 수 있습니다 만, 그것은 가정입니다. 이것이 일어나는 다른 이유는 무엇입니까? 그리고 네 ... 나는

감사

+2

아니요 하나 이상의 (또는 그 이상) 장치를 권한으로 인해 열 수 없으면 단순히 목록에 없을 것입니다. 오류는 반환되지 않습니다. 맨 페이지에서 : "*. pcap_findalldevs()를 호출하는 프로세스가 열 수없는 네트워크 장치가있을 수 있습니다. 예를 들어 해당 프로세스가 캡처를 위해 열 수있는 권한이 충분하지 않을 수 있습니다. 그렇다면 해당 장치 목록에 표시되지 않습니다 ... * " –

+0

Ok. 말이된다. 나는 더 높은 특권으로 시험 할 것이다. – Nick

+0

그게 답입니다. 위의 코드를 테스트 할 콘솔 응용 프로그램으로 옮겼습니다. $ sudo myapp <- 예상대로 작동합니다. – Nick

답변

0

내가 엑스 코드에서 코드를 실행하고 작동있어이 기계 :)에 네트워크 어댑터를 사용할 수 있습니다. 권한 문제가 발생할 가능성이 큽니다. Xcode를 사용하는 경우 편집 할 프로젝트 구성표로 이동 한 다음 "Process Process As"아래에서 root를 선택하십시오. 암호를 입력하라는 메시지가 나타납니다.