Linux下获取网卡名称的3种方法
在Linux中获取网卡名称的方法如下几种,1和2两种没办法在网卡未分配IP 地址时获取:
1.采用socket方式获取网卡列表
int EthManager::listInterface()
{
int fd;
int interface_num = 0,i = 0;
struct ifreq ifbuffer[10];
struct ifconf ifc;
if((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_IP)) < 0){
goto error_close;
}
ifc.ifc_len = sizeof (ifbuffer);
ifc.ifc_buf = (caddr_t)ifbuffer;
if(!ioctl(fd,SIOCGIFCONF,(char*)&ifc)){
interface_num = ifc.ifc_len / sizeof(struct ifreq);
nameList.clear();
while(i < interface_num){
//如果是本地回环地址,则不插入
if(!(strstr(ifbuffer[i].ifr_name,"lo"))){
nameList.insert(i,QString(ifbuffer[i].ifr_name));
}
i++;
}
}
::close(fd);
return 0;
error_close:
::close(fd);
return -1;
}
2.采用getifaddrs方式获取网卡列表
int EthManager::listInterface()
{
int i = 0;
struct sockaddr_in *sin = NULL;
struct ifaddrs *ifa = NULL,*iflist;
if(getifaddrs(&iflist) < 0){
goto error_close;
}
for(ifa = iflist; ifa != NULL; ifa = ifa->ifa_next){
if(ifa->ifa_addr->sa_family == AF_INET){
nameList.insert(i,QString(ifa->ifa_name));
i++;
}
}
freeifaddrs(iflist);
return 0;
error_close:
return -1;
}
3.使用Linux的文件系统的信息 /proc/net/dev
int EthManager::listInterface()
{
char resultbuf[MAX_PATH_LEN];
char namebuf[20];
bzero(resultbuf, MAX_PATH_LEN);
FILE *fp;
//该方法在未设备网卡为up状态时无法获取到网卡名称
//fp = popen("/sbin/ifconfig | grep \"encap\" | grep -v lo | cut -d ' ' -f1","r");
//该方法只要插入网卡就可以检测到网卡设备
//cat /proc/net/dev | grep ":" | grep -v 'lo\|sit0' | cut -d ':' -f1 | sed -e 's/^[ \t]*//g'
fp = popen("cat /proc/net/dev | grep \":\" | grep -v 'lo\\|sit0' | cut -d ':' -f1 | sed -e 's/^[ \t]*//g'","r");
if(fp == NULL){
goto error_close;
}
nameList.clear();
//处理数据行
while(fgets(resultbuf,sizeof (resultbuf),fp) != NULL){
bzero(namebuf, sizeof(namebuf));
sscanf(resultbuf, "%s\n", namebuf);
nameList.push_back(namebuf);
}
::pclose(fp);
return 0;
error_close:
return -1;
}
Linux下获取网卡名称的3种方法相关推荐
- Linux 下获取Root权限的几种方法
方法分为永久性获取root权限以及非永久性获取Root权限 非永久性获取Root权限: 非永久性获取Root权限可以在我们要键入的命令之前加上sudo前缀. 如我们要键入的命令是: rm ,以Root ...
- Linux下查看磁盘挂载的三种方法
Linux下查看磁盘挂载的三种方法 2009-06-05 23:17 好久没有更新日志了,呵呵.不是没有要写的东东.实在抽不出时间来写,要准备公司的考试呢,C++考试.已经有七个月没有写C++代码了, ...
- linux下限制CPU使用率的3种方法 (转)
在租的云服务器上架了一个获取BTCC实时交易数据的服务器程序,因为用了一个while死循环处理数据信息,所以云服务器上的处理器占用率一直在90%多,这两天邮箱里一直收到服务器CPU占用率过高的邮件,在 ...
- linux删除用户删不了怎么办,Linux下完全删除用户的两种方法
Linux操作 实验环境:Centos7虚拟机 首先创建一个普通用户 gubeiqing . [root@localhost ~]# useradd gubeiqing [root@localhost ...
- linux下限制CPU使用率的3种方法
转载:http://blog.163.com/song_0803/blog/static/4609759720091014106684/ linux下限制CPU使用率的3种方法 1,apache本身的 ...
- Linux下 单网卡配置多个ip方法
Linux下配置网卡ip别名何谓ip别名? 用windows的话说,就是为一个网卡配置多个ip. 什么场合增加ip别名能派上用场? 布网需要.多ip访问测试.特定软件对多ip的需要-and so on ...
- linux下载哪个python版本-Linux下切换Python版本的几种方法
本篇博文面向Linux用户,在Ubuntu下测试通过 0 为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来, ...
- linux下查看mysql版本的四种方法
Linux查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select vers ...
- linux查看网卡驱动的命令,在Linux下确定网卡所使用驱动程序的方法
有些时候你可能想知道某个Linux系统的网卡正在使用什么驱动程序,下面简单介绍下如何解决这个问题.一起去看看吧! 1.无论是集成网卡还是独立的网卡,都必须通过某种方式连接到PCI总线上,这样的话,必定 ...
最新文章
- 伍六七带你学算法 进阶篇-三数之和
- java绘等高线图_Matplotlib中的极坐标等高线图
- RocketMQ 消息丢失场景及解决办法
- HTML语言:经典笔记(ZT)
- git操作代码文件的颜色变化
- Linux下SSH Session复制
- 39. 恢复旋转排序数组
- python基础其他(二十一)
- bzoj2456: mode
- RHEL下SendMail修改发邮箱地址
- json串 转 list<class> 方法 List转JSONArray和JSONArray转List
- 10 行 Python 代码自动清理电脑内重复文件,解放双手!
- 买菜201809-2
- 电感电容之开关电源的原理
- G.652与G.655单模光纤分类及对比
- 业务数据分析最佳案例!旅游业数据分析!⛵
- 户外直播、移动直播遇到弱网信号差,如何保证流畅又高清画面传输?
- C++ 上溢和下溢(overflow underflow)
- 坐标系,坐标系转换,梯度计算
- 基于Python的图片批量转PDF实现
热门文章
- 171006 逆向-EAT机制
- 二、创建 Scrapy 爬虫项目
- 前端如何实现 Word 在线预览
- 隔空投送怎么打开「详细教程」
- python 土拨鼠库_为了应对某人的需求,写了一个简单的聊天室内容
- Linux - Linux下Java安装路径查找;配置Java环境变量
- 常用正则表达式一览表
- IEEE 1588/802.1AS标准、硬件,Linux软件学习建议
- c语言case怎么翻译,switch是什么意思_switch在线翻译_英语_读音_用法_例句_海词词典...
- biopython实战中遇到的问题记录--structure.get_id()、icode、Residue.get_id()[2] 学习