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에 쓰여지는 것을 기대할 수 있습니다 만, 그것은 가정입니다. 이것이 일어나는 다른 이유는 무엇입니까? 그리고 네 ... 나는감사
아니요 하나 이상의 (또는 그 이상) 장치를 권한으로 인해 열 수 없으면 단순히 목록에 없을 것입니다. 오류는 반환되지 않습니다. 맨 페이지에서 : "*. pcap_findalldevs()를 호출하는 프로세스가 열 수없는 네트워크 장치가있을 수 있습니다. 예를 들어 해당 프로세스가 캡처를 위해 열 수있는 권한이 충분하지 않을 수 있습니다. 그렇다면 해당 장치 목록에 표시되지 않습니다 ... * " –
Ok. 말이된다. 나는 더 높은 특권으로 시험 할 것이다. – Nick
그게 답입니다. 위의 코드를 테스트 할 콘솔 응용 프로그램으로 옮겼습니다. $ sudo myapp <- 예상대로 작동합니다. – Nick