Как создать большой двоичный файл в C для виртуальной файловой системы?

В основном в моем проекте мне нужно создать VSF на ОС unix, используя gcc. Я создал архитектуру, состоящую из метаблока, заголовка, содержащего дескриптор файла, и файловых блоков. Теперь, если мне нужно создать файловую систему, скажем, 1 ГБ, я предполагаю, что моя мета будет занимать 250 КБ, заголовки будут занимать 1 МБ, а остальное будет выделено моим файловым блокам. Поскольку я создаю только двоичные файлы, я использую функцию fread/fwrite для записи структуры своих блоков в двоичный файл. Теперь я хочу передать размер 1 ГБ в свою функцию, которая создаст разные блоки. Теперь мой вопрос: как создать разные блоки заданного размера с помощью функции fwrite, чтобы все пространство в 1 ГБ было распределено соответствующим образом?


person Ananda    schedule 04.09.2012    source источник


Ответы (1)


Подпись для функции fwrite:

fwrite(const void * restrict ptr, size_t size, size_t nmemb,
         FILE * restrict stream);

Просто нужно подобрать такие числа, что size*nmemb = 1G.

Если я неправильно понял ваш вопрос, пожалуйста, прокомментируйте.

person arrowd    schedule 04.09.2012