![当 C 中的 udev 监视器收到信号时,是否会挂载 USB 驱动器?](https://linux22.com/image/161410/%E5%BD%93%20C%20%E4%B8%AD%E7%9A%84%20udev%20%E7%9B%91%E8%A7%86%E5%99%A8%E6%94%B6%E5%88%B0%E4%BF%A1%E5%8F%B7%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E4%BC%9A%E6%8C%82%E8%BD%BD%20USB%20%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%9F.png)
我正在使用 libudev 来检测 C 程序中何时连接 USB 驱动器。一旦我检测到它已通过来自内核的信号(通过结构udev_monitor
)附加,我可以假设 systemd 已安装该驱动器吗?
如果不是,我如何确定性地等待驱动器安装,即不等待任意时间 X 秒,而是等待特定事件。
答案1
事实证明,最好不要侦听 USB 设备附加事件,而是侦听挂载点附加事件。换句话说,不要过滤“usb”子系统和“usb_device”devtype,而是使用“block”子系统和“partition”devtype,然后检查事件是否包含 ID_BUS="usb"。