【问题标题】:Receiving notification/event/signal of usb device insertion in c++在 C++ 中接收 USB 设备插入的通知/事件/信号
【发布时间】:2013-01-03 18:17:57
【问题描述】:

我一直在寻找一段时间,但我无法找到这个问题的答案。我正在尝试接收特定 USB 设备的连接通知。这是我所拥有/知道的:

我正在运行 linux 内核版本 3.2。我有识别 USB 设备所需的 ID。我创建了一个用于读取和写入设备的内核模块。内核模块已经过测试并且可以正常工作。内核模块创建 /dev/Component#。

我正在尝试编写一个通知 USB 设备连接事件的程序,因此不需要循环 /dev/Component# 并检查文件是否存在。我希望已经存在一个信号/通知/事件。我看过 libusb,但我的理解是,您实际上只是在创建一个读取所有设备的循环。我考虑过添加一个系统调用,但重新编译内核并不是一个真正的选择。

任何帮助将不胜感激。

谢谢,

SgtSquatlow

【问题讨论】:

  • 热插拔脚本是否足够?如果没有,请查看 hotplug 源代码。
  • 我建议您添加udev 规则,该规则将在插入时通知您的守护程序。
  • 不幸的是,代码需要是可移植的,并不是我将运行代码的所有系统都有/使用 udev。

标签: c++ c linux usb


【解决方案1】:

有一个使用 dbus 的解决方案。首先,如果尚未安装库 libdbus-glib(在 Debian / Ubuntu 上,该软件包称为 libdbus-glib-1-dev),您应该安装它。然后可以峰值一个程序here,编译程序如下:

gcc -o dbus-usb dbus-usb.c $(pkg-config --libs --cflags dbus-glib-1)

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @Simon Shine 我已经链接了一个 stackoverflow 示例。我看不到 stackoverflow 链接是如何失效的。
  • 对不起,我一开始没有注意到。你说得很对。这个答案被自动标记为简短。我改进了格式(使用$(...) 而不是反引号)并对其表示赞同。
猜你喜欢
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 2014-10-15
  • 2012-12-19
相关资源
最近更新 更多