Предположим следующую ситуацию под Linux:
Процесс непрерывно считывает данные с устройства USB-последовательного преобразователя (/dev/ttyUSB0
). Это устройство внезапно отключается и подключается снова (или по какой-либо причине перезагружается). Процесс продолжает иметь действительный дескриптор файла для /dev/ttyUSB0
, но не получит никаких данных с устройства, пока процесс не повторно откроет устройство (поскольку udev удалил и заново создал узел устройства) .
Существует ли прямой способ обнаружения такой ситуации (т. Е. , а не косвенно путем обнаружения тайм-аута в потоке данных), чтобы процесс знал, что он должен повторно открыть устройство? Будет ли надежным отслеживать время модификации /dev/ttyUSB0
с использованием stat()
?
Дополнительные сведения:
Процесс открывает файл устройства с помощью стандартной функции open()
.
/dev
- это tmpfs
, управляемый udev
.
Примечание: Я не хочу использовать для этого любые udev правила и предпочитаю решение, реализованное непосредственно в процессе.