linux c ioctl ifconfig

    技术2025-10-12  21

    ioctl(sock, SIOCGIFHWADDR, &ifr)函数中       SIOCGIFHWADDR     用来获取网卡硬件地址(MAC地址

    typedef struct _get_mac_ {      char  mac[32];

          char brifc[32];     }GETMAC;

    static int get_mac(GETMAC * getmac) {     struct ifreq tmp;     int sock_mac;     char mac_addr[32]={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,getmac->brifc,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(getmac->mac,mac_addr,strlen(mac_addr));     return 0; }

    Processed: 0.011, SQL: 9