INOUT | fh | дескриптор файла (дескриптор) |
IN | size | размер, до которого необходимо расширить или урезать файл (целое) |
int MPI_File_set_size(MPI_File fh, MPI_Offset size)
MPI_FILE_SET_SIZE(FH, SIZE, IERROR)
INTEGER FH, IERROR
INTEGER(KIND=MPI_OFFSET_KIND) SIZE
void MPI::File::Set_size(MPI::Offset size)
MPI_FILE_SET_SIZE изменяет размер файла, ассоциированного с
дескриптором fh. Размер измеряется в байтах от начала файла.
MPI_FILE_SET_SIZE - коллективная; все процессы в группе
должны устанавливать одно и то же значение size.
Если новый размер меньше, чем текущий размер файла, файл
урезается до позиции, определяемой новым размером. Для
реализации необязательно удалять из памяти участки файла,
расположенные за этой позицией.
Если новый размер больше текущего размера файла, размер файла
становится равным size. Участки файла, записанные до этого, не
изменяются. Значения данных в новых участках файла (со
смещением между старым размером файла и новым) неопределенны.
Будет ли подпрограмма MPI_FILE_SET_SIZE выделять
пространство под файл, зависит от реализации, - используйте
MPI_FILE_PREALLOCATE, чтобы заставить выделять пространство
для файла.
MPI_FILE_SET_SIZE не влияет на индивидуальные или общие
файловые указатели. Если был определен тип доступа
MPI_MODE_SEQUENTIAL, когда открывался файл, то тогда
использование данной подпрограммы приведет к ошибке.
Совет пользователям:
Возможно, файловые указатели будут указывать на позиции за концом файла, после того как операция MPI_FILE_SET_SIZE урезает файл. Это допустимо и эквивалентно поиску за текущим концом файла. []
Все неблокирующие запросы и разделенные коллективные операции над fh должны быть выполнены до вызова MPI_FILE_SET_SIZE. В противном случае, вызов MPI_FILE_SET_SIZE ошибочен. Что касается семантики согласованности, то MPI_FILE_SET_SIZE - это операция записи, которая конфликтует с операциями, которые работают с байтами по смещениям между старым и новым размерами файла (см. раздел File Consistency ).