У меня есть блокирующее чтение в linux, работающее в потоке.
Во время завершения работы программы я хочу вырвать поток из этого чтения.К сожалению, я не могу использовать опрос или выбирать и писать правильный код, потому что файл, который читается из, является драйвером устройства, который не реализует функцию опроса / выбора.
В качестве временного решения в настоящее время я посылаю сигнал SIGUSR1 черезpthread_kill в поток и вызов pthread_exit из обработчика.Это убивает поток и работает до сих пор, но я не удовлетворен решением, потому что сигнал может появиться где угодно, не только внутри чтения.
Есть ли какой-нибудь механизм, прерывающий блокирующее чтение в linux?
Кстати - я пытался закрыть дескриптор файла из другого потока в надежде, что это приведет к ошибкам ввода-вывода некоторых типов.К сожалению, это простое решение не сработало вообще.