假设Linux下的情况如下:
一个进程不断地从 USB 串行转换器设备中读取数据 ( /dev/ttyUSB0
)。该设备突然被拔掉并再次插入(或由于某种原因正在自行重置)。该进程继续拥有有效的文件句柄,/dev/ttyUSB0
但不会从设备接收任何数据,除非该进程重新打开设备(因为udev已删除并重新创建了设备节点)。
是否有直接的方法来检测这种情况(即,不是通过检测数据流中的超时来间接检测),以便进程知道它必须重新打开设备?/dev/ttyUSB0
监控using的修改时间是否可靠stat()
?
额外细节:
该过程使用标准open()
函数打开设备文件。
/dev
是由tmpfs
控制的udev
。
注意:我不想为此使用任何udev规则,而是更喜欢直接在流程中实现的解决方案。