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