Например. Есть /dev/ttyUSB0, на нем открытый файловый дескриптор (POSIX open), на файловом дескрипторе по кругу вызываются select с read-ом. Вдруг, внезапно выдергиваю usb-кабель, и в результате:
1. /dev/ttyUSB0 пропадает;
2. select() начинает бесконечно выдавать FD_ISSET() == 1 для готовности чтения на нашем декскрипторе.
3. read() при этом все время возвращается прочитав 0 байт.
Такое поведение наблюдается на платформе которая имеется в моём распоряжении (x86_64, linux 4.0.4, GNU libc 2.18), но я не знаю как программа поведёт себя на другой платформе.
Вопрос, каким вызовом переносимо определить факт потери устройства. Сравнение с нулём кол-во прочитанных байт не предлагать.