linux读取mac地址

背景

在应用开发中,很多时候会使用到设备的MAC地址。通常在终端我们使用ifconfig获取网卡的mac地址。在程序中使用ifconfig获取mac地址需要使用管道的方式来获取信息。也可以通过iocatl的方式获取mac地址

实现

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
  struct ifreq ifreq;
  int sock = 0;
  char mac[32] = "";
  int ret = 0;

  do{
    sock = socket(AF_INET,SOCK_STREAM,0);
    if(sock < 0){
      perror("error sock");
      ret = -1;
      break;
    }

    strcpy(ifreq.ifr_name,"wlan0");

    if(ioctl(sock,SIOCGIFHWADDR,&ifreq) < 0){
      perror("error ioctl");
      ret = -1;
      break;
    }

    int i = 0;
    for(i = 0; i < 6; i++){
      sprintf(mac+3*i, "%02X:", (unsigned char)ifreq.ifr_hwaddr.sa_data[i]);
    }
    mac[strlen(mac) - 1] = 0;
    printf("MAC: %s\n", mac);
  }while(0);

  if(sock)
    close(sock);

  return 0;
}

你可能感兴趣的:(笔记,linux)