C语言实现linux网卡检测精简版

本文实例为大家分享了C语言实现linux网卡检测的精简代码,供大家参考,具体内容如下

万能的网络,通过getifaddrs可以大大减少编码量,获得 C语言实现linux网卡检测-改进版 同样的效果。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <ifaddrs.h>
#include <arpa/inet.h> 

int c_ifaddrs_netlink_status(const char *if_name )
{
 struct ifaddrs *ifa = NULL, *ifList; 

 if (getifaddrs(&ifList) < 0)
 {
 return -1;
 }

 for (ifa = ifList; ifa != NULL; ifa = ifa->ifa_next)
 {
 if(ifa->ifa_addr->sa_family == AF_INET)
 {
  if(strcmp(ifa->ifa_name, if_name) ==0)
  {
  if(!(ifa->ifa_flags & IFF_UP))
  {
   printf("DEVICE_DOWN\r\n");
   freeifaddrs(ifList);
   return 1;
  }

  if(!(ifa->ifa_flags & IFF_RUNNING))
  {
   printf("DEVICE_UNPLUGGED\r\n");
   freeifaddrs(ifList);
   return 2;
  }

  printf("DEVICE_LINKED\r\n");
  freeifaddrs(ifList);
  return 3;
  }
 }
 } 

 printf(stderr, "DEVICE_NONE\r\n");
 freeifaddrs(ifList);
 return 0;
}

int main(int argc, char* argv[])
{
 int i=0;
 if(argc != 2)
 {
 fprintf(stderr, "usage: %s <ethname>\r\n", argv[0]);
 return -1;
 }

 i = c_ifaddrs_netlink_status(argv[1]);

 fprintf(stderr,"c_ifaddrs_netlink_status if_status = %d\n", i );
 return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现linux网卡连接检测的方法

    本文实例为大家分享了C语言实现linux网卡连接检测的具体代码,供大家参考,具体内容如下 直接上代码吧 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <linux/if.h> #include <

  • C语言实现linux网卡检测改进版

    C语言+shell 实现linux网卡状态检测 和 C语言实现linux网卡连接检测 2文的方法各有缺陷,比如有些系统执行ifconfig需要root权限,要不就不支持ioctl(fd, SIOCGMIIPHY, &ifr)这样的操作.以下给出了C语言实现linux网卡连接检测 的改进版实现与C语言+shell 实现linux网卡状态检测 同样的功能. #include <stdlib.h> #include <stdio.h> #include <string.h&

  • C语言+shell实现linux网卡状态检测

    本文实例为大家分享了C语言+shell实现linux网卡状态检测的具体代码,供大家参考,具体内容如下 不解释,直接上代码 要求linux环境具备grep和awk(awk可选) #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> int get_if_status(char *if_name) { char buffer[BUFSIZ]; char cmd

  • C语言实现linux网卡检测精简版

    本文实例为大家分享了C语言实现linux网卡检测的精简代码,供大家参考,具体内容如下 万能的网络,通过getifaddrs可以大大减少编码量,获得 C语言实现linux网卡检测-改进版 同样的效果. #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <linux/

  • C语言实现抢红包程序代码精简版

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 其实这是段相当简单的代码,至于为什么还要把它放在博客上呢,主要是针对那些刚入门学编程的同学(或者是对程序感兴趣的同学),一个比较直观的程序(小游戏)或许更能培养他们的兴趣,或是说更能使他们对编程满怀热情.首先我自己也是从那个阶段过来的,对于老师上课讲得知识很迷茫,不知道熟悉一些运算符,语句,结构有什么用,该怎么用,于是自己摸索着找了几个实例练练手,在练习的过程就逐步掌握了老师讲的知识,自己对编程也更感兴趣了.下

  • oracle 10g 精简版安装步骤分享

    今天遇到个软件要求安装oracle client端,于是考虑装精简版本的,就从http://www.oracle.com/technology/software/tech/oci/instantclient/index.html下载了instantclient-basic-win32-10.2.0.4.zip,该版本支持多种语言的.虽然最终精简版是安装成功了,但是该软件还是没有办法使用,估计精简版中没有它需要的文件.不过由此学会了装精简版还是不错地,呵呵!现将精简版的安装步骤如下写出来: 1-把

  • 用C/C++实现linux下检测网络接口状态

    本文实例为大家分享了使用C/C++实现linux下检测网络接口状态,供大家参考,具体内容如下 要写个检测网络接口链接状态的东西,又不喜欢不断的ping别的地址,也不想调用其他命令行工具来做这个,于是在google了n多内容未果之后,搜到个检测工具的源代码. 以下代码在fedora 9 / CentOS 5.2下调试通过:) #include <sys/types.h> #include <string.h> #include <stdlib.h> #include &l

  • sql server 2008 r2 express 精简版与企业版的区别

    sql server 2008 r2 express是什么版本 express是精简版的意思 r2是2008的第2版本,推荐使用. SQL Server Express 2008 r2 可以理解为 "学习版", 就是 没有某些 高级的功能, 但是用于 学习 SQL , 以及 简单的使用, 是足够了.微软网站,免费下载的.sql server 2008 r2 可以理解为 "专业版" 或者 "企业版", 具备一些高级的功能.是要付费的.公司使用的话,

  • linux上免安装版MySQL5.7.18的教程详解

    1. 下载mysql 从官网下载mysql的压缩包    mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2 把下载的包上传到linux上,先安装下依赖包:Ubuntu用 apt-get install libaio*    centOS用yum install libaio* 3 用tar -xzvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 解压 改名并移动到/usr/local  下:mv mysql-5.7.1

  • Java 实现文件批量重命名亲测可用(精简版)

    之前在网上下载了很多视频,解压缩后,发现里面每个文件前面都有一长串的网址,导致我根本看不清每个视频的名字到底叫什么? 网上搜了一些批量重命名的方法,可都不是我想要的,既然这样,干脆自己动手用Java写一个吧.测了一下应该没问题,现在分享出来. 先上代码: import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /** * 重命名规则类 * @author ja

随机推荐