1
我正在嘗試檢測我的計算機上的所有網絡適配器(OSx 10.8)。所以我有這個代碼小,典型的一塊:libpcap - pcap_findalldevs在MacOSx上返回NULL
int main()
{
pcap_if_t *alldevs;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_findalldevs(&alldevs, errbuf);
...
}
當我執行這個鏈表:pcap_if_t是空的,errbuf是明確的爲好。這可能是一個權限問題?在這種情況下,我希望有一些東西會寫入errbuf,但這是一個假設。任何其他原因爲什麼會發生?是的..我有這臺機器:)上可用的網絡適配器
感謝
不,如果一個(或多個或所有)設備因特權而無法打開,它將不在列表中,則不會返回任何錯誤。從手冊頁:「* ..請注意,可能有網絡設備無法通過調用pcap_findalldevs()的進程打開,因爲,例如,該進程可能沒有足夠的權限打開它們進行捕獲;如果是這樣,那些設備將不會出現在列表中... *「 –
好的。說得通。我將以更高的特權進行測試。 – Nick
這就是答案。我將上面的代碼移出到控制檯應用程序中進行測試。 $ sudo myapp < - 按預期工作 – Nick