В треде, параллельном основному UI-треду, происходит чтение входного файла. Используются стандартные потоки+boost. Файл может быть длинным, и этот тред иногда нужно принудительно останавливать. В некоторых случаях файл является fifo.
Входной файл состоит из записей, и в текущем виде тред после каждой прочитанной записи проверяет, не пришёл ли ему приказ завершиться. Этот метод не годится, так как если файл является fifo, и создающий его процесс был убит, не успев слелать запись полностью, либо не успев сделать ни одной записи, читающий файл тред зависнет в ожидании ввода.
Как сделать правильно? Нужно что-то вроде системного вызова select, но на потоках.