1

我在 QT(嵌入式 linux)中有一个 USB 接口的应用程序。

当 Pendrive 插入内核为此发送信号时,我想识别该信号并希望我的 QT 应用程序检测到它。

我浏览了 QT 的 unix 信号处理教程,但我找不到任何解决问题的方法。

我实现了与教程中相同的操作,但我没有找到检测 pendrive 的方法。它只会杀死进程。

请通过以下链接。

QT Unix 信号处理

我还发现使用 qt 的 QdBus 库。我交叉编译了它,但给了我 lidbus 版本的错误。

有没有其他方法可以从应用程序中检测到外部 pendrive?

4

2 回答 2

1

内核正在广播网络链接信息。你可以,

  • 编写一个自定义QSocket()来获取netlink信息。请参阅:Qt 项目线程
  • 直接写socket代码获取netlink信息
  • 使用现成的工具包,例如libusb,它将使用netlink
  • 将脚本添加到udev.confmdev.conf以写入文件并使用QFileSystemWatcher;可能/etc/fstab也是如此。 udev并且mdev是标准的热插拔处理程序,它们具有允许您在事件上运行脚本的配置文件。底层机制再次是netlink

如果您想自动挂载文件系统,解析netlink或使用/etc/fstab可能会更好。如果选择解析路径,则需要解析信息Search for,非常简单。name=valuenetlink

于 2013-09-24T13:24:05.573 回答
0

我得到了解决方案 我使用了 mkdev.conf 的 busybox 工具。我在其中添加了对 USB pendrive 检测的支持,并使用 udev 实用程序在 linux 和应用程序信号处理程序之间建立了桥梁。

于 2014-04-09T11:15:55.480 回答