linux - 在嵌入式 Linux 上处理设备插入和移除

标签 linux qt embedded

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

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

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

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

请通过以下链接。

QT Unix Signal Handling

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

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

最佳答案

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

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

如果您想自动挂载 文件系统,解析netlink 或使用/etc/fstab 可能更好。如果选择解析路由,需要解析the name=value information 搜索netlink,非常简单。

关于linux - 在嵌入式 Linux 上处理设备插入和移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973813/

相关文章:

c - getnameinfo 指定 socklen_t

python - Apache 创建文件 : how to control permissions

c++ - connect() 找不到信号函数

qt - 如何让double MouseArea生效?

c - Linux 3.16.0-bone2 BeagleBoneBlack 中缺少 bone_capemgr?

linux - 线程终止时是否调用了 `SIGKILL`?

linux - 将 Apache 重写规则(前端 Controller )转换为 Nginx

linux - 如何将数据发送到(基于Linux的)嵌入式系统

c++ - 全局声明 QStringlist 变量,使用 QFileDialog 获取位置路径并将其打印到 lineEdit 并在 QProcess 中使用它

haskell - Atom 适合生成通用 C 代码吗?