我在 QT(嵌入式 linux)中有一个 USB 接口(interface)的应用程序。
当 Pendrive 插入的内核为此发送信号时,我想识别该信号并希望我的 QT 应用程序检测到它。
我浏览了 QT 的 unix 信号处理教程,但找不到任何解决问题的方法。
我实现了与教程中相同的操作,但我没有找到检测 pendrive 的方法。它只会终止进程。
请通过以下链接。
我还发现使用 qt 的 QdBus 库。我交叉编译了它,但给了我 lidbus 版本的错误。
有没有其他方法可以从应用程序检测外部 pendrive?
最佳答案
内核正在广播netlink信息。你可以,
- 编写一个自定义的
QSocket()
来获取netlink 信息。请参阅:Qt Projects thread - 直接编写socket代码获取netlink信息
- 使用现成的工具包,如
libusb
,它将使用 netlink。 - 将脚本添加到udev.conf 或mdev.conf 以写入文件并使用
QFileSystemWatcher
;可能还有 /etc/fstab。udev
和mdev
是标准的 hotplug 处理程序,它们具有允许您在事件上运行脚本的配置文件。底层机制同样是 netlink。
如果您想自动挂载 文件系统,解析netlink 或使用/etc/fstab 可能更好。如果选择解析路由,需要解析the name=value
information 搜索netlink
,非常简单。
关于linux - 在嵌入式 Linux 上处理设备插入和移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973813/