您的位置:首页 > 运维架构 > Linux

Linux下获取MAC地址

2013-07-02 14:22 555 查看
#include <sys/ioctl.h>

#include <netinet/in.h>

#include <net/if.h>

#include <string.h>

#include <stdio.h>

int get_mac(char* mac)

{

 

    struct ifreq tmp;

 

    int sock_mac;

 

    char mac_addr[50] = {0};

 

    sock_mac = socket(AF_INET, SOCK_STREAM, 0);

 

    if( sock_mac == -1){

 

        perror("create socket fail\n");

 

        return -1;

 

    }

 

    memset(&tmp,0,sizeof(tmp));

 

    strncpy(tmp.ifr_name,"eth0",sizeof(tmp.ifr_name)-1 );

 

    if( (ioctl( sock_mac, SIOCGIFHWADDR, &tmp)) < 0 ){

 

        printf("mac ioctl error\n");

 

        return -1;

 

    }

 

    sprintf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x",

 

            (unsigned char)tmp.ifr_hwaddr.sa_data[0],

 

            (unsigned char)tmp.ifr_hwaddr.sa_data[1],

 

            (unsigned char)tmp.ifr_hwaddr.sa_data[2],

 

            (unsigned char)tmp.ifr_hwaddr.sa_data[3],

 

            (unsigned char)tmp.ifr_hwaddr.sa_data[4],

 

            (unsigned char)tmp.ifr_hwaddr.sa_data[5]

 

            );

 

    

    close(sock_mac);

 

    memcpy(mac,mac_addr,strlen(mac_addr));

 

    return 0;

 

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C Mac