gpt4 book ai didi

c - 通过中断检测热插拔

转载 作者:太空宇宙 更新时间:2023-11-04 04:25:54 25 4
gpt4 key购买 nike

我目前正在使用 udev 来检测我的应用程序中的 USB 热插拔事件,但据我所知这是一个轮询过程,它需要一个线程持续监控内核 uevent。有什么方法可以让内核通过中断通知我,或者在检测到热插拔事件时向我的进程发出信号?

谢谢

最佳答案

首先编写一个 udev 规则来识别设备并在该设备连接到主机时运行脚本(操作)。

  1. 使用以下命令获取设备信息,在我的示例中,它是 USB 控制台适配器。此命令将报告一系列信息,我们可以使用这些信息通过 udev 规则文件识别热插拔设备。

$ udevadm info -a -n /dev/ttyUSB0

现在创建一个文件 -/etc/udev/rules.d/99-usbdev.rules,内容如下。

SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="xxxx", ATTRS{product}=="USB to UART Bridge Controller", RUN+="/usr/bin/devattached.sh"

重新加载 udev 规则和服务:

$ udevadm control --reload-rules
$ systemctl restart udev.service

调试:如果 udev 规则不起作用!!

udevadm monitor --udev
  1. 用您想要的操作制作一个脚本,并将其放在“RUN+”中提供的完全相同的路径上。不要忘记为该脚本授予可执行权限。使用 pgrep 和 kill 命令从脚本向您的进程发送信号。

关于c - 通过中断检测热插拔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41582608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com