嵌入式 hi3518平台检测网线是否插上

简介: [html] view plain copy        [html] view plain copy     /********************************** (C) COPYRIGHT *******************...
[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1.   
[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. /********************************** (C) COPYRIGHT *******************************  
  2. * File Name          : linkstatus_check.c  
  3. * Author             : skdkjzz  
  4. * Date               : 2014/08/07  
  5. * Description        : 网线是否插上  
  6. *********************************************************************************/  
  7.   
  8.   
  9. #include <sys/types.h>    
  10. #include <string.h>    
  11. #include <stdlib.h>    
  12. #include <sys/types.h>    
  13. #include <sys/ioctl.h>    
  14. #include <sys/stat.h>    
  15. #include <stdio.h>    
  16. #include <string.h>    
  17. #include <errno.h>    
  18. #include <net/if.h>    
  19. #include <sys/utsname.h>    
  20. #include <limits.h>    
  21. #include <ctype.h>       
  22. #include <sys/socket.h>    
  23. #include <netinet/in.h>    
  24. #include <arpa/inet.h>       
  25. #include <linux/sockios.h>    
  26.     
  27. #define ETHTOOL_GLINK   0x0000000a   /* Get link status (ethtool_value) */    
  28. struct ethtool_value {    
  29.                       unsigned int   cmd;    
  30.                       unsigned int   data;     
  31.                      };      
  32.     
  33. int get_netlink_status(const char *if_name);    
  34.      
  35.   
  36.   
  37. /****************************************************************   
  38.    return value:    
  39.    -1 -- error , details can check errno    
  40.    1  -- interface link up    
  41.    0  -- interface link down.    
  42. ****************************************************************/  
  43. int get_netlink_status(const char *if_name)    
  44. {    
  45.     int skfd;    
  46.     struct ifreq ifr;    
  47.     struct ethtool_value edata;    
  48.     edata.cmd = ETHTOOL_GLINK;    
  49.     edata.data = 0;    
  50.     memset(&ifr, 0, sizeof(ifr));    
  51.     strncpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name) - 1);    
  52.     ifr.ifr_data = (char *)&edata;    
  53.     if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) == 0)    
  54.         return -1;    
  55.     if (ioctl(skfd, SIOCETHTOOL, &ifr) == -1)    
  56.     {    
  57.        close(skfd);         
  58.        return -1;    
  59.     }    
  60.     close(skfd);    
  61.     return edata.data;    
  62. }    
  63.   
  64.   
  65. int main()    
  66. {    
  67.     char net_buf[10]="eth0";   
  68.     printf("Net link status: %s\n", get_netlink_status(net_buf) == 1 ? "up" : "down");    
  69.     return 0;    
  70. }    
  71.    
  72.   
  73.   
  74.    </span>  
目录
相关文章
|
开发工具
推荐几款typora替代品
MarkText Typedown Atom
|
存储 资源调度 负载均衡
云计算——常见集群策略
云计算——常见集群策略
543 0
|
NoSQL Linux 程序员
Linux objdump命令:深入解析与实战应用
`objdump`是Linux下的反汇编工具,用于将二进制文件转换为汇编代码,便于理解程序底层。它可以反汇编目标文件、可执行文件和库,支持多种参数,如显示符号表(-t)、反汇编代码(-d)、源代码与汇编混合视图(-S)。在实践中,结合-g编译选项和特定段(-j)反汇编,能辅助调试和分析。使用时注意包含调试信息,选择适当参数,并与其他工具(如gdb)配合使用。
|
机器学习/深度学习 运维 监控
函数计算产品使用问题之如何解决SD插件安装后不显示的问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
200 0
|
缓存 边缘计算 网络协议
阿里云CDN介绍
阿里云CDN介绍
372 0
|
存储 编译器 C语言
为什么C语言全局变量初始化元素必须是常量,而局部变量可以不是常量
为什么C语言全局变量初始化元素必须是常量,而局部变量可以不是常量
225 0
|
Linux 芯片 编译器
在U-boot中添加以太网驱动
<p>当定义CONFIG_CMD_NET和CONFIG_CMD_PING,编译之后执行ping命令,告警没有找到以太网。</p> <p>因此,需要打开U-boot的网络功能, u-boot-sunxi-sunxi中没有找到明显的网络驱动代码,或许有通用的驱动,但可以获得资料的途径有限,再说我是个初学者,平时工作属于自动控制类,网络方面很菜,因此想通过修改一个网络驱动,进行一次初步学习,想
4816 0
|
存储 移动开发 算法
【数据结构和算法】使用数组的结构实现链表(单向或双向)
【数据结构和算法】使用数组的结构实现链表(单向或双向)
遥感原理与应用:常用波段及其特性、太阳辐射衰减原因、大气窗口及其分布是什么?
遥感原理与应用:常用波段及其特性、太阳辐射衰减原因、大气窗口及其分布是什么?
773 0
遥感原理与应用:常用波段及其特性、太阳辐射衰减原因、大气窗口及其分布是什么?
|
存储 Linux 数据安全/隐私保护
超详细的CentOS7.4下载与图文安装 上
超详细的CentOS7.4下载与图文安装 上
3587 0
超详细的CentOS7.4下载与图文安装  上