Даже если бы был такой инструмент, он мог бы работать, только если файлы, кроме последнего
были гарантированно иметь размер, кратный блоку файловой системы
размер.
Если вы контролируете, как данные записываются во временные файлы, и вы знаете
насколько велика будет каждая из них, вместо этого вы можете сделать следующее
Перед началом многопроцессорной обработки создайте окончательный выходной файл и увеличьте его.
это до окончательного размера
fseek()
ING
до конца, это создаст
разреженный файл .
Запустите многопроцессорную обработку, передав каждый процесс FD и смещению в его
определенный фрагмент файла.
Таким образом, процессы будут совместно заполнять один выходной файл,
избавляя от необходимости катать их вместе позже.
EDIT
Если вы не можете предсказать размер отдельных файлов, но потребитель
Конечный файл может работать с последовательным (в отличие от произвольного доступа) вводом, вы можете
подача cat tmpfile1 .. tmpfileN
потребителю, либо на стандартный
cat tmpfile1 ... tmpfileN | consumer
или по именованным каналам (с использованием подстановки процессов в bash):
consumer <(cat tmpfile1 ... tmpfileN)