Linux下如何获取MAC地址
2017-06-07 14:24
661 查看
Linux下如何获取MAC地址
int get_mac(char *mac ,int len_limit)
{
struct ifreq ifreq;
int sock;
if((sock = socket(AF_INET ,SOCK_STREAM ,0)) < 0)
{
LOGSTREAM( gp_log[LOGAPP], LOGPOSI << "|socket Error" );
return -1;
}
strcpy(ifreq.ifr_name ,"em1");
if(ioctl(sock,SIOCGIFHWADDR ,&ifreq) < 0)
{
close(sock);
LOGSTREAM( gp_log[LOGAPP], LOGPOSI << "|ioctl Error" );
return -1;
}
close(sock);
return snprintf(mac ,len_limit ,"%02X:%02X:%02X:%02X:%02X:%02X",
(unsigned char)ifreq.ifr_hwaddr.sa_data[0] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[1] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[2] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[3] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[4] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[5] );
}
之前没有close掉sock描述符,会导致sock泄露。
int get_mac(char *mac ,int len_limit)
{
struct ifreq ifreq;
int sock;
if((sock = socket(AF_INET ,SOCK_STREAM ,0)) < 0)
{
LOGSTREAM( gp_log[LOGAPP], LOGPOSI << "|socket Error" );
return -1;
}
strcpy(ifreq.ifr_name ,"em1");
if(ioctl(sock,SIOCGIFHWADDR ,&ifreq) < 0)
{
close(sock);
LOGSTREAM( gp_log[LOGAPP], LOGPOSI << "|ioctl Error" );
return -1;
}
close(sock);
return snprintf(mac ,len_limit ,"%02X:%02X:%02X:%02X:%02X:%02X",
(unsigned char)ifreq.ifr_hwaddr.sa_data[0] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[1] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[2] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[3] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[4] ,
(unsigned char)ifreq.ifr_hwaddr.sa_data[5] );
}
之前没有close掉sock描述符,会导致sock泄露。
相关文章推荐
- Linux下如何获取网络设备MAC地址
- asp.net如何获取客户端网卡mac地址
- 如何用ASP来获取网卡的MAC地址
- linux下程序设计-获取本机MAC地址
- 如何在VMware虚拟机中修改Linux MAC地址
- 如何获取本机所有MAC地址
- 在linux下 获取本机MAC地址的函数
- 如何在LINUX中获取进程中某个虚拟地址所在物理内存地址
- 获取MAC地址后如何快速解析IP地址
- linux下获取多个网卡MAC地址
- 如何获取本机所有MAC地址
- 如何获取本机所有MAC地址
- linux c获取mac地址
- JAVA 如何取MAC 地址(Linux和window)
- 如何获取本地和远程主机的IP及MAC地址
- windows及Linux系统下获取IP及MAC地址的方法
- 如何获取MAC地址
- Windows或Linux下如何查看网卡MAC地址
- Linux下如何修改网卡MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址