У меня есть поток, работающий в фоновом режиме, который блокирует блокирование событий с устройства ввода, теперь, когда я выхожу из приложения, я хочу правильно очистить поток, но я не могу просто запустить pthread_join() потому что нить никогда не выйдет из-за блокировки IO.
Как правильно решить эту ситуацию? Должен ли я отправить pthread_kill (theard, SIGIO) или pthread_kill (theard, SIGALRM), чтобы сломать блок? Является ли это даже правильным сигналом? Или есть другой способ решить эту ситуацию и позволить этому дочернему потоку завершить чтение блокировки?
В настоящее время немного озадачен, так как ни один из моих поисковых запросов не нашел решения.
Это на Linux и с помощью pthreads.
Редактирование: я немного играл с SIGIO и SIGALRM, когда я не устанавливаю обработчик сигналов, они прерывают блокировку ввода-вывода, но дают сообщение на консоли (возможно "входы/выходы" ), но когда я устанавливаю обработчик сигнала, чтобы избежать этого сообщения, они больше не прерывают блокировку IO, поэтому поток не заканчивается. Поэтому я возвращаюсь к первому шагу.