2013-06-26 35 views
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,但這是一個假設。任何其他原因爲什麼會發生?是的..我有這臺機器:)上可用的網絡適配器

感謝

+2

不,如果一個(或多個或所有)設備因特權而無法打開,它將不在列表中,則不會返回任何錯誤。從手冊頁:「* ..請注意,可能有網絡設備無法通過調用pcap_findalldevs()的進程打開,因爲,例如,該進程可能沒有足夠的權限打開它們進行捕獲;如果是這樣,那些設備將不會出現在列表中... *「 –

+0

好的。說得通。我將以更高的特權進行測試。 – Nick

+0

這就是答案。我將上面的代碼移出到控制檯應用程序中進行測試。 $ sudo myapp < - 按預期工作 – Nick

回答

0

我跑Xcode中的代碼,並得到它的工作。您很可能遇到權限問題。如果您使用Xcode,請轉至您的項目方案進行編輯,然後在「調試過程爲」下​​,選擇root。系統將提示您輸入密碼以運行。

相關問題