Взгляните на posix_fallocate()
:
NAME
posix_fallocate - allocate file space
SYNOPSIS
int posix_fallocate(int fd, off_t offset, off_t len);
DESCRIPTION
The function posix_fallocate() ensures that disk space is allocated for
the file referred to by the descriptor fd for the bytes in the range
starting at offset and continuing for len bytes. After a successful
call to posix_fallocate(), subsequent writes to bytes in the specified
range are guaranteed not to fail because of lack of disk space.
edit В комментариях вы указываете, что вы используете потоки C ++ для записи в файл.Насколько я знаю, не существует стандартного способа получить дескриптор файла (fd
) из std::fstream
.
Имея это в виду, я бы сделал предварительное выделение дискового пространства отдельным этапом процесса.Это будет:
open()
файл; - использование
posix_fallocate()
; close()
файла.
Это можно превратить в короткую функцию, которую нужно вызвать, прежде чем вы даже откроете fstream
.