Linux用户空间上的USB插件检测

时间:2015-10-29 08:46:40

标签: linux linux-kernel linux-device-driver embedded-linux

  1. 我正在为Linux用户空间编写一个用于HMI的C程序。我想在插入SBC的USB端口时检测到pendrive。我正在运行Lubuntu。所以它没有udev库。当我尝试在SBC上安装udev时,它要求依赖性和版本兼容性问题即将到来。有没有其他方法可以从用户空间检测Pendrive插入。
  2. 当我将设备ex:/ dev / sdc1 (pendrive)安装到特定文件夹ex:/ mnt / vj时,它正确安装。如果我卸下pendrive而不卸载它,那么当下次pendrive插入时它被检测为/ dev / sdd1 。在这种情况下如何修复pendrive的逻辑名称。我希望它始终是/ dev / sdc1。有可能吗?
  3. 感谢您的期待。

2 个答案:

答案 0 :(得分:1)

  1. 您可以实现自己的事件侦听守护程序而不是udev。您将创建类型为NETLINK_KOBJECT_UEVENT的netlink套接字。通过解析事件,您将能够检测到驱动器的插入。

  2. 无法确保名称始终相同,但您可以在检测到事件后为正确的块设备创建符号链接。

答案 1 :(得分:0)

检查主要解决您的udev安装/依赖项问题的链接ubuntu 12.04 libudev-dev won't install because of dependencies(如果与之相关)。

udev是检测硬件插件和获取设备信息的最简单方法之一。结帐libudev是udev(Linux内核的设备管理器)的一部分。除了在将硬件设备添加到系统中或从中删除硬件设备时管理/ dev目录中的设备节点,udev还处理在各种操作(例如添加/删除)期间引发的所有相关用户空间事件。

libudev允许访问设备信息,并提供监控接口,例如连接到设备事件源的udev_monitor。 udev_monitor_get_fd提供可与select系统调用一起使用的文件描述符。

检查此链接,其中包含与libudev http://www.signal11.us/oss/udev/

的使用相关的信息