检测打开的文件/设备是否已被替换/删除

Udo*_*o G 5 linux filesystems monitoring usbserial udev

假设在Linux下存在以下情况:

从USB串行转换器设备(/dev/ttyUSB0)连续读取过程。该设备突然被拔出并再次插入(或出于某种原因而将其自身重置)。进程继续具有有效的文件句柄,/dev/ttyUSB0但除非重新打开设备(因为udev已删除并重新创建设备节点),否则它将不会从设备接收任何数据。

是否有检测这种情况的直接方法(即不是通过检测数据流中的超时来间接检测),以便进程知道必须重新打开设备?难道是可靠监控的修改时间/dev/ttyUSB0使用stat()

额外细节:

该过程使用标准open()功能打开设备文件。

/dev是由所tmpfs控制udev

注意:我不想为此使用任何udev规则,而是希望在过程中直接实现的解决方案。