создание пустого файла не нулевого размер

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2561
ОС: Debian

создание пустого файла не нулевого размер

Сообщение IMB »

Доброго дня!
Есть UDP multicast протокол который передаёт данные блоками, блоки состоят из некоторого количества кусков данных. Так как это UDP и multicast то начать получать данные можно с любого места.
Полученные данные надо сохранить на NAND, в правильном порядке конечно, но объём памяти ограничен и возможным решением видится сохранять данные сразу на NAND, но, в силу ранее описанных ограничений, данные надо писать с правильными смещениями.
Вопрос - возможно ли средствами libc создать файл необходимого размера, вариант с циклом записи нулевых буфером хотелось бы избежать, или как можно динамически изменять размер файла через ранее открытый дескриптор?
Спасибо.
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: создание пустого файла не нулевого размер

Сообщение anonymous.ru »

Разрежённый файл — файл?
используй lseek за конец файла на нужный размер и запиши \0
:drinks:
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: создание пустого файла не нулевого размер

Сообщение IMB »

скажем извесно что данных должно придти 50МБ

Код: Выделить всё

int fd = creat(file_name, 0644);
// здесь код увеличивающий размер до нужных 50МБ
close(fd);
lseek позволит такие фокусы учитывая что данные могут приходить в рандомном порядке?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: создание пустого файла не нулевого размер

Сообщение Bizdelnick »

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: создание пустого файла не нулевого размер

Сообщение IMB »

Спасибо, попробуем.
Раз lseek позволяет устанавливть смещение за текущий размер, то наверное его и попробую в первую очередь, всё равно придётся постоянно менять смещение.
Спасибо сказали:
Ответить