linux獲取網絡卡名稱
阿新 • • 發佈:2019-02-17
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <net/if.h> #include <sys/ioctl.h> int main() { int i=0; int sockfd; struct ifconf ifc; unsigned char buf[512]; struct ifreq *ifr; //初始化ifconf ifc.ifc_len = 512; ifc.ifc_buf = buf; if((sockfd = socket(AF_INET, SOCK_DGRAM, 0))<0) { perror("socket"); exit(1); } ioctl(sockfd, SIOCGIFCONF, &ifc); //獲取所有介面資訊 //接下來獲取逐個網絡卡的名稱 ifr = (struct ifreq*)buf; for(i=(ifc.ifc_len/sizeof(struct ifreq)); i>0; i--) { printf("name = [%s]\n", ifr->ifr_name); ifr++; } return 0; }