使用netlink.方式检测,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define UEVENT_BUFFER_SIZE 2048

static int init_hotplug_sock()
{
  const int buffersize = 1024;
  int ret;

struct sockaddr_nl snl;
  bzero(&snl, sizeof(struct sockaddr_nl));
  snl.nl_family = AF_NETLINK;
  snl.nl_pid = getpid();
  snl.nl_groups = 1;

int s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
  if (s == -1)
  {
        perror("socket");
        return -1;
  }
  setsockopt(s, SOL_SOCKET, SO_RCVBUF, &buffersize, sizeof(buffersize));

ret = bind(s, (struct sockaddr *)&snl, sizeof(struct sockaddr_nl));
  if (ret < 0)
  {
        perror("bind");
        close(s);
        return -1;
  }

return s;
}

int main(int argc, char* argv[])
{
  int hotplug_sock = init_hotplug_sock();

while(1)
  {
      /* Netlink message buffer */
      char buf[UEVENT_BUFFER_SIZE * 2] = {0};
      recv(hotplug_sock, &buf, sizeof(buf), 0);
      printf("%s\n", buf);

/* USB 设备的插拔会出现字符信息,通过比较不同的信息确定特定设备的插拔,在这添加比较代码 */
  }
  return 0;

}

经过测试发现只能实现插与拔,但是无法具体到具体是什么设备。

linux下检测USB的热插拨相关推荐

  1. linux下usb的热插拔监控,怎么linux下检测 usb摄像头热插拔事件

    在linux下所有设备都是文件.所以对摄像头的操作其实就是对文件的操作.USB摄像头的设备文件就是在/dev目录下的video0(假如只有一个摄像头).在linux下操作摄像头就是使用v4l2对摄像头 ...

  2. *Linux下的USB总线驱动 u盘驱动分析*

    Linux下的USB总线驱动(三) u盘驱动分析 版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127 https://www.xuebuyuan.com/13 ...

  3. 如何编写Linux 下的 USB 键盘驱动

     如何编写Linux 下的 USB 键盘驱动 1. 指定 USB 键盘驱动所需的头文件: #include <linux/kernel.h>/*内核头文件,含有内核一些常用函数的原型定 ...

  4. usb hub 要驱动 linux,Linux下的USB HUB驱动

    Linux下的USB HUB驱动 [日期:2012-07-29] 来源:Linux社区 作者:zhengmeifu [字体:大 中 小] 五:hub接口驱动分析 5.1:接口驱动架构 是时候来分析接口 ...

  5. Linux下的USB总线驱动 mouse

    Linux下的USB总线驱动(03)--USB鼠标驱动 usbmouse.c USB鼠标驱动 usbmouse.c 原文链接:http://www.linuxidc.com/Linux/2012-12 ...

  6. 手动制作linux live,Linux下Live USB如何制作

    Linux下Live USB如何制作?Linux系统下该如何制作Live USB呢?下面小编就给大家介绍几种方法.一起去看看吧! 1.UNetbootin 这是创建Live USB最流行的工具之一.U ...

  7. Linux下检测网络状态是否正常

    // Linux下检测网络状态是否正常 #include <sys/types.h> #include <string.h> #include <stdlib.h> ...

  8. linux 开发板传文件,Linux下用USB传输文件到开发板

    记录一下解决EZ6410的板子在Linux下用USB来传输文件问题的过程~ 前两天ARM11的开发板到了,需要先验证一下各项功能.以往用FS2410时用的是minicom+usb2ram,功能比win ...

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

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

最新文章

  1. 微软软件测试的可借鉴之处
  2. code Gym 100500D T-shirts(暴力)
  3. WPF获取当前用户控件的父级窗体
  4. ubuntu下面navicat连接本地数据库出现2003 - Can't connect to MySQL server on 'localhost'(10061 Unknown errort;)
  5. ajax 分页 评论刷新,评论:js无刷新分页(原创)
  6. java 简单类继承
  7. Java基础练习之流程控制(四)
  8. matlab可达矩阵 结果,matlab可达矩阵
  9. vb6判断操作系统版本-从win95到win7
  10. python爬取二手房信息,基于python爬取链家二手房信息代码示例
  11. ALPS磁式传感器和轴地磁式传感器
  12. 关于阿里云aca和acp哪个好?阿里云认证证书有含金量吗?
  13. jvm(17)垃圾回收器
  14. 如何实现PDF转Word
  15. 阿里云服务器安装postgresql
  16. 基于python的自媒体和官媒数据爬取、可视化分析及云词图制作
  17. 时序预测 | MATLAB实现BiLSTM时间序列预测
  18. RTL-SDR 学习——什么是RTL-SDR(1)
  19. mongoDB从入门到实战最全小白教程
  20. 关于RF射频 PCB布线心得

热门文章

  1. 2018/02/12
  2. adb connect连接手机失败的解决办法
  3. Python语言程序设计--猫和老鼠小游戏
  4. 爬取东方财富网股票行情数据和资讯
  5. 用ffmpeg将多张图片转为视频
  6. php图片留白,PHP:图片不变形处理(留白处理与截取处理)-奇乐网
  7. MODIFY STRUCTURE和ALTER TABLE的区别?
  8. usb触摸屏驱动移植
  9. Word文件的只读模式没有密码怎么退出?
  10. iOS 史上最全App上架流程分享