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

2024-01-05 11:48

本文主要是介绍嵌入式 hi3518平台检测网线是否插上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


/********************************** (C) COPYRIGHT *******************************
* File Name          : linkstatus_check.c
* Author             : skdkjzz
* Date               : 2014/08/07
* Description        : 网线是否插上
*********************************************************************************/#include <sys/types.h>  
#include <string.h>  
#include <stdlib.h>  
#include <sys/types.h>  
#include <sys/ioctl.h>  
#include <sys/stat.h>  
#include <stdio.h>  
#include <string.h>  
#include <errno.h>  
#include <net/if.h>  
#include <sys/utsname.h>  
#include <limits.h>  
#include <ctype.h>     
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <arpa/inet.h>     
#include <linux/sockios.h>  #define ETHTOOL_GLINK   0x0000000a   /* Get link status (ethtool_value) */  
struct ethtool_value {  unsigned int   cmd;  unsigned int   data;   };    int get_netlink_status(const char *if_name);  /**************************************************************** return value:  -1 -- error , details can check errno  1  -- interface link up  0  -- interface link down.  
****************************************************************/
int get_netlink_status(const char *if_name)  
{  int skfd;  struct ifreq ifr;  struct ethtool_value edata;  edata.cmd = ETHTOOL_GLINK;  edata.data = 0;  memset(&ifr, 0, sizeof(ifr));  strncpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name) - 1);  ifr.ifr_data = (char *)&edata;  if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) == 0)  return -1;  if (ioctl(skfd, SIOCETHTOOL, &ifr) == -1)  {  close(skfd);       return -1;  }  close(skfd);  return edata.data;  
}  int main()  
{  char net_buf[10]="eth0"; printf("Net link status: %s\n", get_netlink_status(net_buf) == 1 ? "up" : "down");  return 0;  
}  </span>


这篇关于嵌入式 hi3518平台检测网线是否插上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572772

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l