我在QT(嵌入式Linux)中有一个USB接口应用程序。
当Pendrive插入内核发送信号时,我想识别该信号,并希望我的QT应用程序检测到它。
我参加了QT的unix信号处理教程,但我找不到任何问题。
我实现了与教程中完成的相同的操作,但我没有找到检测pendrive的方法。它只会杀死进程。
请浏览以下链接。
我也发现使用qt的QdBus库。我交叉编译了它,但给了我lidbus版本的错误。
还有其他方法可以从应用程序中检测外部pendrive吗?
答案 0 :(得分:1)
内核正在广播netlink信息。你可以,
QSocket()
以获取 netlink 信息。请参阅:Qt Projects thread libusb
这样的现成工具包,它将使用 netlink 。QFileSystemWatcher
;可能还有 / etc / fstab 。 udev
和mdev
是标准的 hotplug 处理程序,它们具有允许您在事件上运行脚本的配置文件。基础机制再次是 netlink 。如果要 automount 文件系统,可以更好地解析 netlink 或使用 / etc / fstab 。如果选择解析路径,则需要解析the name=value
information 搜索netlink
,这很容易。
答案 1 :(得分:0)
我得到了解决方案我已经使用了mkdev.conf的busybox工具。我在其中添加了对USB pendrive检测的支持,并使用udev实用程序在linux和Application信号处理程序之间建立桥梁。