Блокировка при чтении данных из канала
Передо мной стоит с одной стороны довольно тривиальная задача: прочитать данные из канала (файла). Особенность задачи в том, что чтение должно быть блокирующим: то есть, если в файле ничего нет, а я хочу считать строку, процесс должен зависнуть до тех пор, пока в файл не будут записаны данные. Аналогичная логика, на сколько мне известно, реализована для работы с сокетами (например, у функции socket_recvfrom).
Конечно, у моей задачи есть довольно простое решение - считывать данные в цикле с помощью fgets, пока функция не вернёт что-нибудь. Но может быть кому-нибудь известно более "красивое" решение?