linux usb状态监测,linux下 USB动态监测 hotplug事件监测

2023-10-29

总体规划:

使用netlink接口向内核注册hotplug事件通知,获取事件通知后进行相关动作如(Action==add)挂载或(action==remove)卸载,使用Socket IPC机制向需要响应USB热拔插事件的应用程序报告。

功能包括:

1、获取usb卷标

2、挂载、卸载usb

3、动态监测usb热拔插事件

4、使用socket向应用程序报告热拔插事件

函数接口说明:

int reportToIplayer(USBEvent event,const char *servername);

向应用程序IPlayer报告热拔插事件

void check();

程序启动开始先检查当前u盘状态(空或者已存在)

int getDevPath(const char *buf,char *path,int size);

从热拔插事件的Diagram消息即buf中获得usb的设备路径存放到path,size为path缓冲大小

int rm_dir(const char *path);

删除挂载时建立的空目录

int make_dir(const char *devPath,const char *dstPath);

挂载钱建立一个空目录dstPath,dstPath为挂载目录

int get_label(const char *dev,char *buf,int size);

获取u盘卷标

int recordDstPath(int no,const char *dstPath);

记录下挂载路径,便于rm_dir查询

int init_hotplug_sock(void);

向内核注册hotplug事件

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef struct USBEvent

{

int event;

char path[30];

}USBEvent;

int init_hotplug_sock(void)

{

struct sockaddr_nl snl;

const int buffersize = 16*1024*1024;

int retval;

memset(&snl,0x00,sizeof(struct sockaddr_nl));

snl.nl_family = AF_NETLINK;

snl.nl_pid = getpid();

snl.nl_groups = 1;

int hotplug_sock = socket(PF_NETLINK,SOCK_DGRAM,NETLINK_KOBJECT_UEVENT);

if(hotplug_sock == 1)

{

printf("error get socket:%s",strerror(errno));

return -1;

}

/* set receive buffersize */

setsockopt(hotplug_sock,SOL_SOCKET,SO_RCVBUFFORCE,&buffersize,sizeof(buffersize));

retval = bind(hotplug_sock,(struct sockaddr *)&snl,sizeof(struct sockaddr_nl));

if(0>retval)

{

printf(&#

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux usb状态监测,linux下 USB动态监测 hotplug事件监测 的相关文章

  • MySQL之体系结构

    一 MySQL系统体系结构 1 MySQL系统体系结构 1 1 数据库 1 2 数据库实例 1 3 MySQL体系结构 1 4 逻辑存储结构 1 5 MySQL物理存储结构 二 MySQL主要文件 1 慢查询日志 1 1 慢查询日志相关参数
  • 电路基础(4) 电阻电路的一般分析

    1 电路的图 将上面的电路图 抛开其中元器件的性质 可以提取出 只有线和结点的图 如果考虑电流等的流向 则可以变化位 有向图 提取的有向图少了8那条支路 是因为把元件的并联组合也作为一条支路了 提取的有向图少了7那条支路 是因为把元件的串联
  • Janus网关的集成与优化

    本文由学霸君音视频架构师李桥平在LiveVideoStackCon 2020 线上峰会的演讲内容整理而成 内容主要包括Janus网关的集成过程以及集成过程中遇到的一些问题 文 李桥平 整理 LiveVideoStack 大家好 我是李桥平
  • 群晖NAS公网访问(IP+DNSPOD+桥接+端口转发+DDNS+WebDAV)

    群晖NAS公网访问 IP DNSPOD 桥接 端口转发 DDNS WebDAV 文章更新一版 结果审核不过 只能转载了 https www cnblogs com nomil9 articles 12924354 html
  • 从工厂到五星级写字楼,我从5K涨到了12K,中间只隔了一个python

    写在开篇 我大学是计算机专业的 但是我对于代码方面不太感冒 实习的时候接触到UI设计还挺感兴趣 也会有一些培训机构来学校做一些宣讲 但是家里面不太支持 他们就会觉得大学四年也差不多是花这些你都没有学到什么 你现在花一两万块钱去学这四个月 难
  • abp OFFSET 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

    在学习abp框架时 出现上述错误 这是因为使用了sql server2008 数据库造成端 数据库版本低 可以更改代码 在项目中ctrl f搜索 UseSqlServer 找到如下代码 添加 b gt b UseRowNumberForPa
  • 毕业设计-BP神经网络的房地产价值评估研究

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • virtualbox下以nat模式设置一个稳定的局域网,并通过远程连接工具如mobaXterm连接到其中

    文章目录 软件 虚拟机NAT网络布置过程 设置端口转发为mobaxterm连接做准备 mobaxterm中的session设置 又附一些感悟 软件 virtualbox7 0 2版本 centos7 虚拟机NAT网络布置过程 由于这个版本的
  • 一文讲懂:已上架APP如何换公司的各项主体-苹果、安卓、支付、域名等

    目录 前言 一 换支付宝支付 01 注册支付宝账号 02 企业认证 03 入驻开放平台 04 创建应用 05 商户产品签约 APP支付 06 商户产品签约 手机网站支付 07 商户产品签约 电脑网站支付 08 支付宝客户服务支持 二 换微信
  • double等浮点数比较问题,eps

    ACM中的浮点数精度处理 在ACM中 精度问题非常常见 其中计算几何头疼的地方一般在于代码量大和精度问题 代码量问题只要平时注意积累模板一般就不成问题了 精度问题则不好说 有时候一个精度问题就可能成为一道题的瓶颈 让你debug半天都找不到
  • RocksDB性能测试

    1 打开数据库 2 随机写 3 顺序写 4 查找 5 写入内容一定要char 么 是否支持其他数据结构 list map 等 6 写入少量数据没有生成stable 写入大量数据后生成stable即SST文件 怎么控制的 为什么写日志速度快
  • ifrme嵌入外部页面,在外部页面调用本页面方法,window.postMessage实现跨域通信

    项目场景 vue页面开发的系统要继承外部系统页面 并且在外部系统页面调用本系统的方法 这样来看的话肯定会存在跨域的问题 而且直接调用方法的话 也不太安全 后来了解到window postMessage实现跨域通信 所以想着根据通信信息来去实
  • 路由与交换技术-19-HSRP+PVSTP综合实验

    HSRP PVSTP 综合实验 目的 实现冗余和负载 用于多生成树 多个vlan 多生成树指定vlan的根交换机 阻塞指定端口 实现链路负载均衡 HRSP通过设置不同vlan的活跃路由和备份路由 实现vlan 10 vlan 20的虚拟路由
  • SpringBoot整合Mybatis-plus(一)基本使用与自定义模板代码生成器

    文章目录 一 所需依赖 二 使用MybatisPlus需要配置什么 扫包 yml配置 代码生成器配置 genreator properties CodeGenerator Controller模板 三 mp的基本使用 查询所有 分页 Myb
  • 创建一个简单的web服务器

    Web服务器也称为超文本传输协议 HTTP 服务器 因为它使用HTTP来跟客户端进行通信的 既然说到通信那就离不了Java里的两个重要的类java net Socket和java net ServerSocket 这里浏览器一方可以认为是一
  • Open3D (C++) 计算矩阵的广义逆

    目录 一 算法原理 1 广义逆 2 计算过程 二 代码实现 三 结果展示 四 参考链接 本文由CSDN点云侠原创 原文链接 爬虫网站自重 把自己当个人 爬些不完整的误导别人有意思吗 一 算法原理 1 广义逆 非方阵不存在逆 但是存在广义逆
  • 学机器人编程要学什么知识

    学机器人编程要学什么知识 孩子的学习一直以来都是让家长们非常关心和重视的一件事情 家长在培养孩子的学习方面也可以说相当的耐心的 他们会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于
  • 微信小程序如何创建npm(超详细)

    微信小程序如何创建npm 超详细 大家好 今天我们来学习一下小程序如何创建npm 好好看 好好学 超详细的 第一步 1 Windows下安装Node js及环境配置 2 下载小程序开发工具 第二步 打开小程序开发工具 创建一个新的小程序 如
  • Python 在logging.config.dictConfig()日志配置方式下,使用自定义的Handler处理程序

    文章目录 一 基于 RotatingFileHandler 的自定义处理程序 二 基于 TimedRotatingFileHandler 的自定义处理程序 Python logging模块的基本使用 进阶使用详解 Python loggin

随机推荐

  • vue3中的对象时为proxy对象,如何获取值

    vue3中的对象时为proxy对象 如何获取值 使用vue3 0时 因为底层是使用proxy进行代理的所以当我们打印一些值得时候是proxy代理之后的是Proxy 对象 Proxy对象里边的 Target 才是真实的对象 第一种获取targ
  • SpringBoot常用注解使用

    1 https blog csdn net u010502101 article details 78702093
  • Xilinx_FIFO_IP核的使用

    VIVADO FIFO IP核的使用 此处直达 异步FIFO Verilog实现 概述 FIFO本质上还是RAM 是一种先进先出的数据缓存器 先存入的数据先取出 它与普通存储器的区别 没有外部读写地址线 只能顺序写入数据 顺序的读出数据 其
  • coursera北京大学生物信息学(第三-第四周课程笔记)

    如果觉得有用 谢谢点赞鼓励 课程笔记 如果觉得有用 谢谢点赞鼓励 第三周 第一课 第二课 课后答案100分 第四周 第一课 第二课 马尔可夫模型 第三课 隐马尔可夫模型预测 测试 第三周 第一课 通过上周的动态规划算法引入了blast算法
  • ROS:ubuntu-Ros使用OrbSLAM

    一般无误的官方连接 https github com raulmur ORB SLAM ubuntu16 04没有多少改变 还是使用kinetic老代替indigo Related Publications Artical 1 Ra l M
  • Java 多线程更新_Java程序员升级必备:一文详解多线程之线程同步,从基础到进阶...

    欢迎关注专栏 Java架构筑基 专注于Java技术的研究与分享 Java架构筑基 zhuanlan zhihu comJava架构筑基 专注于Java技术的研究与分享 后续文章将首发此专栏 欢迎各位Java工程师朋友投稿和关注 Java 里
  • 《More Effective C++》 笔记

    条款1 仔细区分 pointers 和 references pointers 是一个变量 其本身存放实际内容的地址 references 是一个引用 其就是实际内容的别名 两者都支持多态但是还是有一定区别的 pointer 在进行创建的时
  • Tomcat本地和在idea目录中详解

    这里写目录标题 tomcat本地目录结构 tomcat本地目录结构 bin目录 主要存放tomcat的常用命令 startup shutdown 用来关闭tomcat conf目录 放置配置文件 web xml 配置servlet filt
  • 正交变换不改变矩阵F-范数、2-范数的证明

    一 两种范数的定义 1 1 F 范数 A F
  • python中logger_python中的logger

    2 logging模块使用 2 1 基本使用 配置logging基本的设置 然后在控制台输出日志 import logging logging basicConfig level logging INFO format asctime s
  • mysql中MVCC原理

    MVCC 是啥 MVCC 的英文全称是 Multiversion Concurrency Control 中文意思是多版本并发控制技术 原理是 通过数据行的多个版本管理来实现数据库的并发控制 简单来说就是保存数据的历史版本 可以通过比较版本
  • 接口文档生成工具JAPiDocs

    效果如下 相比Swagger要写一堆注解 Spring RestDocs需要写测试用例 才能生成API文档 要使得JApiDcos正确工作 代码应该是像下面的样子的 用户接口 RequestMapping api user RestCont
  • boxModel

    boxModel boxModel 盒模型 浏览器默认样式表 常见的块盒 容器元素 div header article section aside footer h1 h6 p 常见的行盒 与内容相关的元素 span a img audi
  • jmeter的JDK路径配置,jmeter启动成功

    修改jmeter的bin目录下的三个文件 查看jdk路径 echo JAVA HOME 1 jmeter 添加JAVA HOME D haiersoftware software java jdk1 7 2 jmeter bat 添加set
  • Facebook商城号最全解析,Facebook Marketplace运营技巧

    相信许多做跨境的小伙伴都听说过Facebook商城号 其实所谓的商城并不是Facebook Shop 而是指Facebook Marketplace 它不像前者需要各类入驻条件 只要拥有facebook账号而且所在地区有能够使用market
  • JAVA基础之String与Integer的转换

    我刷Leetcode题目的时候 经常会遇到变量类型转化的问题 方法也有很多种 经常容易混淆 所以特地总结以下内容 1 String转换为Integer 1 Integer类的静态方法valueof String str 123 Intege
  • ubuntu安装软件更新器和附加驱动

    问题背景 ubuntu在安装各种软件包时 可能会把ubuntu自带的软件更新器和附加驱动一不小心给弄没了 如果需要可以安装下面方式手动安装 解决办法 安装软件更新器 sudo apt get update sudo apt get inst
  • gitlab+jenkins自动化部署

    1 安装gitlab 拉取gitlab镜像 docker search gitlab docker pull gitlab gitlab ce 查看镜像是否拉取成功 docker images 安装gitlab docker run d p
  • 无线通信发展历程分析

    摘要 当前 移动 无线技术领域正处在一个高速发展的时期 各种创新移动 无线技术不断涌现并快速步入商用 移动 无线应用市场异常活跃 移动 无线技术自身也在快速演进中不断革新 无线通信未来的发展趋势表现为 从大范围公众移动通信来看 3G或超3G
  • linux usb状态监测,linux下 USB动态监测 hotplug事件监测

    总体规划 使用netlink接口向内核注册hotplug事件通知 获取事件通知后进行相关动作如 Action add 挂载或 action remove 卸载 使用Socket IPC机制向需要响应USB热拔插事件的应用程序报告 功能包括