在嵌入式Linux上处理设备插入和删除

时间:2013-09-24 05:44:59

标签: linux qt embedded

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

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

我参加了QT的unix信号处理教程,但我找不到任何问题。

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

请浏览以下链接。

QT Unix Signal Handling

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

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

2 个答案:

答案 0 :(得分:1)

内核正在广播netlink信息。你可以,

  • 撰写自定义QSocket()以获取 netlink 信息。请参阅:Qt Projects thread
  • 直接编写套接字代码以获取 netlink 信息
  • 使用像libusb这样的现成工具包,它将使用 netlink
  • 将脚本添加到 udev.conf mdev.conf 以编写文件并使用QFileSystemWatcher;可能还有 / etc / fstab udevmdev是标准的 hotplug 处理程序,它们具有允许您在事件上运行脚本的配置文件。基础机制再次是 netlink

如果要 automount 文件系统,可以更好地解析 netlink 或使用 / etc / fstab 。如果选择解析路径,则需要解析the name=value information 搜索netlink ,这很容易。

答案 1 :(得分:0)

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

相关问题