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

标签 linux filesystems monitoring udev usbserial

假设Linux下有以下情况:

一个进程正在不断地从 USB 串行转换器设备 (/dev/ttyUSB0) 读取数据。该设备突然拔下并再次插入(或由于某种原因正在自行重置)。进程继续拥有 /dev/ttyUSB0 的有效文件句柄,但不会从设备接收任何数据,除非进程重新打开设备(因为 udev 有删除并重新创 build 备节点)。

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

其他详细信息:

该进程使用标准的 open() 函数打开设备文件。

/dev 是由 udev 控制的 tmpfs

注意:我不想为此使用任何 udev 规则,更喜欢直接在流程中实现的解决方案。

最佳答案

如果 USB 设备被热拔出,设备上的操作将开始失败并显示 -EIO;您可以检测到这一点并采取适当的措施。

关于linux - 检测打开的文件/设备是否已被替换/删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6539194/

相关文章:

linux - 文件大小如何限制在特定文件系统上?

c# - 如何在 C# 中创建 CSV 文件

c++ - 用 0 重写文件。我究竟做错了什么?

monitoring - 如何获取某个时间间隔内指标的增量

linux - 将 cvs diff 的内容复制到一个文件中

linux - Condor 的沙盒 R(在 Linux 上)

linux - GPG解密时提供Passphrase

Linux 审计日志 - 带有失败退出代码的成功事件

java - Java 垃圾收集时监控 CPU、RAM、I/O 使用情况

Java用另一个对象监视一个对象