linux下检测USB的热插拨
使用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的热插拨相关推荐
- linux下usb的热插拔监控,怎么linux下检测 usb摄像头热插拔事件
在linux下所有设备都是文件.所以对摄像头的操作其实就是对文件的操作.USB摄像头的设备文件就是在/dev目录下的video0(假如只有一个摄像头).在linux下操作摄像头就是使用v4l2对摄像头 ...
- *Linux下的USB总线驱动 u盘驱动分析*
Linux下的USB总线驱动(三) u盘驱动分析 版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127 https://www.xuebuyuan.com/13 ...
- 如何编写Linux 下的 USB 键盘驱动
如何编写Linux 下的 USB 键盘驱动 1. 指定 USB 键盘驱动所需的头文件: #include <linux/kernel.h>/*内核头文件,含有内核一些常用函数的原型定 ...
- usb hub 要驱动 linux,Linux下的USB HUB驱动
Linux下的USB HUB驱动 [日期:2012-07-29] 来源:Linux社区 作者:zhengmeifu [字体:大 中 小] 五:hub接口驱动分析 5.1:接口驱动架构 是时候来分析接口 ...
- Linux下的USB总线驱动 mouse
Linux下的USB总线驱动(03)--USB鼠标驱动 usbmouse.c USB鼠标驱动 usbmouse.c 原文链接:http://www.linuxidc.com/Linux/2012-12 ...
- 手动制作linux live,Linux下Live USB如何制作
Linux下Live USB如何制作?Linux系统下该如何制作Live USB呢?下面小编就给大家介绍几种方法.一起去看看吧! 1.UNetbootin 这是创建Live USB最流行的工具之一.U ...
- Linux下检测网络状态是否正常
// Linux下检测网络状态是否正常 #include <sys/types.h> #include <string.h> #include <stdlib.h> ...
- linux 开发板传文件,Linux下用USB传输文件到开发板
记录一下解决EZ6410的板子在Linux下用USB来传输文件问题的过程~ 前两天ARM11的开发板到了,需要先验证一下各项功能.以往用FS2410时用的是minicom+usb2ram,功能比win ...
- linux u盘插入事件,Linux 下监控USB设备拔插事件
Linux 下监控USB设备拔插事件 发布时间:2018-01-29 00:00, 浏览次数:1111 , 标签: Linux USB * 使用Netlink来实现 这是一个特殊的socket,可以接 ...
最新文章
- 微软软件测试的可借鉴之处
- code Gym 100500D 	T-shirts(暴力)
- WPF获取当前用户控件的父级窗体
- ubuntu下面navicat连接本地数据库出现2003 - Can't connect to MySQL server on 'localhost'(10061 Unknown errort;)
- ajax 分页 评论刷新,评论:js无刷新分页(原创)
- java 简单类继承
- Java基础练习之流程控制(四)
- matlab可达矩阵 结果,matlab可达矩阵
- vb6判断操作系统版本-从win95到win7
- python爬取二手房信息,基于python爬取链家二手房信息代码示例
- ALPS磁式传感器和轴地磁式传感器
- 关于阿里云aca和acp哪个好?阿里云认证证书有含金量吗?
- jvm(17)垃圾回收器
- 如何实现PDF转Word
- 阿里云服务器安装postgresql
- 基于python的自媒体和官媒数据爬取、可视化分析及云词图制作
- 时序预测 | MATLAB实现BiLSTM时间序列预测
- RTL-SDR 学习——什么是RTL-SDR(1)
- mongoDB从入门到实战最全小白教程
- 关于RF射频 PCB布线心得