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

-
- Сообщения: 2555
- ОС: Debian
Re: создание пустого файла не нулевого размер
скажем извесно что данных должно придти 50МБ
lseek позволит такие фокусы учитывая что данные могут приходить в рандомном порядке?
Код: Выделить всё
int fd = creat(file_name, 0644);
// здесь код увеличивающий размер до нужных 50МБ
close(fd);
-
- Модератор
- Сообщения: 20065
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: создание пустого файла не нулевого размер
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 2555
- ОС: Debian
Re: создание пустого файла не нулевого размер
Спасибо, попробуем.
Раз lseek позволяет устанавливть смещение за текущий размер, то наверное его и попробую в первую очередь, всё равно придётся постоянно менять смещение.
Раз lseek позволяет устанавливть смещение за текущий размер, то наверное его и попробую в первую очередь, всё равно придётся постоянно менять смещение.