2009-09-28 50 views

回答

2
#include <net/raw.h> 
#include <net/if.h> 
#include <net/soioctl.h> 
#include <sys/ioctl.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <unistd.h> 

... 

struct ifreq ifdat; 
int s; 

s = socket (PF_RAW, SOCK_RAW, RAWPROTO_SNOOP); 
strcpy (ifdat.ifr_name, "en0"); 
ioctl (s, SIOCGIFADDR, &ifdat); 

... 

把它清理一下,ifdat應該包含你的MAC地址。

+0

成功(ifdat.enaddr)。我特此稱讚你爲IRIX的國王。謝謝。 – Thomas 2010-04-03 15:47:40

1

我不知道有關編程,但你可以嘗試/etc/nvram eaddr,我想你可以exec()那。

+0

我不想掏腰包,但至少它工作。謝謝。這是否意味着所有網卡都具有相同的MAC地址? – Thomas 2009-09-29 06:40:04

0

在某些平臺上(例如Linux)ioctl()允許獲取MAC地址。您需要檢查IRIX,因爲ioctl()是平臺相關的。

+0

是的,我正在尋找一些比這更具體的東西。我已經看過ioctl()和sysctl(),但沒有任何關於我的。 – Thomas 2009-09-29 06:40:59

+0

您是否在ioctl頭文件中檢查了可能的ioctl()請求? – qrdl 2009-09-29 07:09:42

相關問題