Ваше предположение неверно. gunzip не должен видеть весь файл, чтобы распаковать его. Прочитайте формат файла распаковки. Там есть каталог со смещениями для отдельных компонентов.
Возможно распаковать файл по частям.
"Несжатый файл хранится где-то полностью ... верно?"
Не обязательно. Не уверен, почему ты это предполагаешь или где читаешь.
Все низкоуровневые вызовы ввода / вывода могут блокироваться. Запись в gunzip - при записи в канал - может блокироваться, когда буфер канала заполнен. Так определяется ввод / вывод в канал. Трубные блоки ввода / вывода.
Проверьте man-страницы для трубы для деталей.
Если процесс пытается прочитать из
пустая труба, затем читать (2) будет
блокировать, пока данные не доступны. Если
процесс пытается записать в
полная труба (см. ниже), затем напишите (2)
блоки до достаточного количества данных
был прочитан из трубы, чтобы позволить
написать для завершения. Неблокируемая
Ввод / вывод возможен при использовании fcntl (2)
Операция F_SETFL для включения
O_NONBLOCK флаг состояния открытого файла.