У меня следующая ситуация:
Существует поток, который читает с устройства с помощью вызова fread. Этот вызов блокируется до тех пор, пока с устройства не отправляются данные. Когда я останавливаю этот поток, он остается висеть внутри него.
Теперь я обнаружил на странице руководства fread следующее:
ОШИБКИ
Во всех системах, которые соответствуют Единая спецификация UNIX, fread () функция устанавливает значение errno, как указано для следующие условия:
[EINTR] Операция чтения была прекращено в связи с получением сигнал, и данные не были переданы.
Это означало бы, что есть способ прервать вызов из другого потока. Но я не знаю как. Может кто подскажет, как отправить сигнал на прерывание вызова fread? И какой сигнал мне нужно послать?
Update 08-10-10 09:25
У меня все еще не работает. Я пробовал kill () и pthread_kill () с разными сигналами. Но похоже, что ничто не прерывает вызов fread (). Единственное, что у меня получилось, это убить все приложение, но это не то, что я хочу.