Я знаю, что это старый вопрос, но я надеюсь, что это поможет кому-то в будущем. Подобно симуляции файловой системы, вы можете просто использовать именованный канал:
mkfifo /path/to/file_to_be_read
{ echo "HEADER"; cat /path/to/source_file; } > /path/to/file_to_be_read
Затем вы запускаете устаревшую программу для /path/to/file_to_be_read
, и ввод будет:
HEADER
contents of /path/to/source_file
...
Это будет работать до тех пор, пока программа читает файл последовательно и не делает mmap()
или rewind()
мимо буфера.