У меня есть очень большое известное количество байтов на стандартном вводе, и я хочу отбросить большое (также известное) их количество, прежде чем читать интересующую часть (другими словами, я хочу выполнить fseek вперед на большое целое число, но fseek не работает). не определено для труб). Самый простой способ добиться этого — большое количество вызовов fgetc, а первая альтернатива — использовать один вызов fread с большим временным указателем, выделенным для хранения результата. Первый очень медленный, а второй использует потенциально неограниченный объем памяти без уважительной причины. Выполнение нескольких операций чтения меньшего размера решает проблему неограниченного использования памяти, но вводит свободный параметр (размер фрагмента), который, вероятно, имеет разное самое быстрое значение для каждой комбинации машины и ОС.
Существуют ли какие-либо альтернативы, которые достигают этой цели аккуратным и эффективным способом? Предполагается POSIX.