C++中获取enp1s0的mac地址
时间: 2023-09-02 15:11:52 浏览: 51
在 C 语言中,可以使用 SIOCGIFHWADDR 命令获取网络设备的 MAC 地址,其中 enp1s0 是一个网络接口的名称。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
struct ifreq ifr;
int fd;
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
perror("socket");
exit(1);
}
strncpy(ifr.ifr_name, "enp1s0", IFNAMSIZ - 1);
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
perror("ioctl");
close(fd);
exit(1);
}
close(fd);
printf("MAC address: %02x:%02x:%02x:%02x:%02x:%02x\n",
(unsigned char) ifr.ifr_hwaddr.sa_data[0],
(unsigned char) ifr.ifr_hwaddr.sa_data[1],
(unsigned char) ifr.ifr_hwaddr.sa_data[2],
(unsigned char) ifr.ifr_hwaddr.sa_data[3],
(unsigned char) ifr.ifr_hwaddr.sa_data[4],
(unsigned char) ifr.ifr_hwaddr.sa_data[5]);
return 0;
}
```
该程序通过 socket() 函数创建一个套接字,然后使用 ioctl() 函数和 SIOCGIFHWADDR 命令获取 enp1s0 网络接口的 MAC 地址。最后,格式化输出结果。