Учитывая ФАЙЛ *
или дескриптор файла, существует ли стандартный способ узнать, сколько байтов готово к чтению?
Я не могу использовать s = ftell (f), fseek (f , 0, SEEK_END), e = ftell (f), fseek (f, s, SEEK_SET), es
, поскольку FILE *
просто обертывает файловый дескриптор, полученный из pipe ( 2)
, и я получаю ESPIPE
, когда пытаюсь это сделать.
Я думал использовать select (2)
с нулевым таймаутом, чтобы сообщить, что у меня есть хотя бы один байт, готовый к чтению, а затем читать по байту, пока не будет выбран (2)
сказал мне остановиться. Это кажется неуклюжим и медленным.
Есть ли способ лучше?