1. 使用Netlink来实现

这是一个特殊的socket,可以接受来自内核的消息

代码如下:

运行结果如下:

当有USB设备插入时:

当有USB设备拔出时:

2.使用udev的规则来实现

自2.6 核心开始,就可以使用udev 协助管理系统中各设备名称。例如,磁盘设备排序、网卡设备排序等。udev能动态地在/dev 目录里产生自定义的、标识性强的设备文件或设备链接。

2.4 内核使用devfs(设备文件系统)在设备初始化时创建设备文件,设备驱动程序可以指定设备号、所有者、用户空间等信息,devfs 运行在内核环境中,并有不少缺点:可能出现主/辅设备号不够,命名不灵活,不能指定设备名称等问题。而自2.6 内核开始,引入了sysfs 文件系统。sysfs 把连接在系统上的设备和总线组织成一个分级的文件,并提供给用户空间存取使用。udev 运行在用户模式,而非内核中。udev 的初始化脚本在系统启动时创建设备节点,并且当插入新设备——加入驱动模块——在sysfs上注册新的数据后,udev会创新新的设备节点。
udev 是一个工作在用户空间的工具,它能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建,删除,权限等。这些文件通常都定义在/dev 目录下,但也可以在配置文件中指定。udev 必须内核中的sysfs和tmpfs支持,sysfs 为udev 提供设备入口和uevent 通道,tmpfs 为udev 设备文件提供存放空间。
注意,udev 是通过对内核产生的设备文件修改,或增加别名的方式来达到自定义设备文件的目的。但是,udev 是用户模式程序,其不会更改内核行为。也就是说,内核仍然会创建sda,sdb等设备文件,而udev可根据设备的唯一信息来区分不同的设备,并产生新的设备文件(或链接)。而在用户的应用中,只要使用新产生的设备文件即可。
udev 的工作流程图:

相关实例如下:

在/etc/udev/rules.d文件夹下创建相关规则文件,内容如下:

当插入设备(ACTION=="add")在kernel中设备名为sdb4(KERNEL=="sdc1"),且为块设备(SUBSYSTEM=="block"),满足以上三个条件时,对设备文件命名为Myusb(NAME="Myusb"),并创建软链接Myusb_link(SYMLINK+="Myusb_link"),同时执行/home/usbadd.sh脚本(RUN+="/home/usbadd.sh")。

其中sdc1就是通过fdisk -l查看得到的,软链接会在/dev下创建,名字可以自定义(以后无论插入任何u盘都可以以同一名字来访问),usbadd.sh脚本中可以编写你想实现的任何内容,我的内容是将u盘挂载到/mnt/usb目录下:

当设备拔出时,运行/home/usbremove.sh脚本卸载u盘:

Linux 下监控USB设备拔插事件相关推荐

  1. linux u盘插入事件,Linux 下监控USB设备拔插事件

    Linux 下监控USB设备拔插事件 发布时间:2018-01-29 00:00, 浏览次数:1111 , 标签: Linux USB * 使用Netlink来实现 这是一个特殊的socket,可以接 ...

  2. QT在Windows下检测USB设备热拔插的思路

    一.问题描述: 使用QT开发视频会议时需要实现实时检测USB摄像头/麦克风拔插的功能,这里主要涉及到对一些Windows API的了解以及windows系统的设备管理识别不同种设备时的原理,在实现过程 ...

  3. 2022-08-29 AndroidR 修改默认usb连接模式为MTP(Media Transfer Protocol)),UsbDeviceManager.java里面处理OTG口usb设备拔插侦听

    一.默认是做为adb 调试功能,实际测试修改persist.sys.usb.config 是没有用. 二.拔插usb设备默认的选项是No data transfer  三.按下面的修改就可以修改默认u ...

  4. linux自动运行upan可执行文件脚本,linux下插入USB设备使用脚本实现自动挂载

    某天客户要求说要想在linux OS上插入U盘,然后像和在windows上一样实现自动挂载,在网上没有搜索到有用的信息,有一个软件usbmount,但是试验用不了,有兴趣可以瞧瞧,地址如下 客户就是客 ...

  5. linux查看usb设备文件,Linux下查看USB设备信息

    首先需要将usbfs挂载一下,然后才能查看. $ mount -t usbfs none /proc/bus/usb $ cat  /proc/bus/usb/devices 或者在文件(/etc/f ...

  6. linux 下查看 USB 设备的 PID 和 VID

    这里以 centos7为例 方法一: 首先进入 /sys/bus/usb/devices 目录: cd /sys/bus/usb/devices 先不要插入 usb 设备,然后使用 ll 命令,可查看 ...

  7. linux下实现USB设备(U盘)及SD卡自动识别及挂载(应用层) linux下U盘识别及挂载 linux下SD卡识别及挂载

    两种方式,一种是注册通信句柄去监测内核发送的消息,一种是直接读取文件.第一种网上有很多,可以自行百度,但是这种方式只能识别热插拔,下面主要介绍通过读取文件去识别U盘及SD卡节点,实现挂载. 两个目录及 ...

  8. linux下监控usb自动挂载

    挂载路径自己修改即可: U盘挂载部分: #include "checkudisk.h"checkUdisk::checkUdisk(QObject *parent): QObjec ...

  9. 【C#】Winform监听USB串口设备拔插

    [C#]Winform监听USB串口设备拔插 零.问题 最近在开发串口相关的软件,需要检测串口拔掉后主动关闭串口,因此需要检测到USB的拔插事件. 一.解决 在主窗口From类下覆盖WndProc方法 ...

最新文章

  1. typera插入网站
  2. jQuery常用方法一览
  3. Ironic 的 Rescue 救援模式实现流程
  4. Stanford UFLDL教程 用反向传导思想求导
  5. 【腾讯Bugly干货分享】动态链接库加载原理及HotFix方案介绍
  6. Halcon - 定位 - 卡尺
  7. oracle内存参数越大越好吗,什么是Oracle内存参数调优技术?
  8. python检测端口是否被侦听
  9. HDU1285 确定比赛名次【拓扑排序】
  10. Ubuntu下自定义调整CPU工作频率(用于省电或提高性能都好用)
  11. 安卓9开机 bootanimation.zip_小米手机如何从安卓10退回安卓9系统,不丢失传感器,不变砖...
  12. NHibernate中Example类使用注意事项
  13. 什么是cmm3规范?什么是CMMI5 呢?
  14. cad电气工程量计算机,CAD电气管线快速算量方法
  15. 数据仓库与数据挖掘的OLAP技术----韩家炜教授的《数据挖掘概念与技术》学习笔记
  16. 西门子PLCSIM仿真PLC的网口连接与设置
  17. shell笔记_重定向与文本处理命令
  18. VScode提交Git代码总是要输入账号和密码?
  19. ttf字体转换成woff2网页字体快捷方法
  20. 请假时间计算方式java_java计算两段时间的重复天数

热门文章

  1. SQL语句(复制一张表和更新表)
  2. [HZWER NOIP模拟题][杂题][防骗题]数列
  3. 2019.4.3拼多多笔试第一题
  4. 只有大佬才知道的八大顶级自学网站,赶紧收藏学习吧!!!(转载)
  5. Pikachu系列——暴力破解
  6. Linux服务器扩容
  7. 自贡市计算机编程学校,自贡市电子职业技术学校官方计划
  8. 二分图最大匹配(匈牙利算法)
  9. obs媒体源没有声音_大线索报道:抖音怎么申请obs游戏直播权限?
  10. Centos7修改DNS Server教程