热插拔

linux使用udev获取热插拔(hotplug)事件

匿名 (未验证) 提交于 2019-12-02 21:59:42
udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等,设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。udev同时提供了监视接口,当设备的状态改变时,监视接口可以向应用程序报告发生的事件,当设备加入系统或从系统移除时都可以接到通知。 udev只支持linux-2.6及以上版本的内核,因为udev严重依赖于sysfs文件系统提供的信息,而sysfs文件系统只在linux-2.6内核中才有。 udev能够实现所有devfs实现的功能。但udev运行在用户模式中,而devfs运行在内核模式中。 作用: 1. 动态创建或删除设备文件 2. 遍历sysfs设备文件 3. hotplug(利用netlink) 使用udev需要先安装libudev库,在程序中包含libudev.h头文件,并且在编译时加上-ludev告诉编译器去链接udev库。 1. 安装libudev sudo apt-get install libudev-dev 2. 编写测试代码udev-hotplugin.c #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <signal.h> #include <sys