Как прервать вызов fread?

У меня следующая ситуация:

Существует поток, который читает с устройства с помощью вызова fread. Этот вызов блокируется до тех пор, пока с устройства не отправляются данные. Когда я останавливаю этот поток, он остается висеть внутри него.

Теперь я обнаружил на странице руководства fread следующее:

ОШИБКИ

Во всех системах, которые соответствуют Единая спецификация UNIX, fread () функция устанавливает значение errno, как указано для следующие условия:

[EINTR] Операция чтения была прекращено в связи с получением сигнал, и данные не были переданы.

Это означало бы, что есть способ прервать вызов из другого потока. Но я не знаю как. Может кто подскажет, как отправить сигнал на прерывание вызова fread? И какой сигнал мне нужно послать?


Update 08-10-10 09:25

У меня все еще не работает. Я пробовал kill () и pthread_kill () с разными сигналами. Но похоже, что ничто не прерывает вызов fread (). Единственное, что у меня получилось, это убить все приложение, но это не то, что я хочу.

6
задан Peter Fortuin 8 October 2010 в 07:27
поделиться