Jump to content
    

Как записать в файл используя по минимуму ОЗУ ?

Здравствуйте! Работаем с устройством на котором заведен linux 5.9 . На борту свободно 25 мегабайт. Из них наша программа отъедает еще 4 мб. 
При попытке записать на SD карту файл более 7мб , ядро пытается высободить память и ломает либо wpa_supplicant , либо выдает ошибку segmentation fault, либо kernel panic возникает. 
Всё перепробовал. Скачивание файла происходят по частям через RLDP. Уже дошло дело до того, что после получения каждой части скачиваемого файла я выполняю fopen, fseek, fwrite, fclose. И как только файл превысит размер 7413221 байт сразу возникают ошибки. 
Я подозреваю , что когда выполняешь fopen система все таки кэширует весь файл, и свободная оперативка заканчивается. 
Можно как-то иначе работать с файлами , чтобы кэш по меньше затрачивался ? 

Через wget проблем со скачиванием нету вовсе, где-то что-то я делаю не так.

Share this post


Link to post
Share on other sites

On 7/20/2025 at 6:01 PM, Mysteo said:

Из них наша программа отъедает еще 4 мб. 

Четыре милли-бита это круто!!! )))

 

Учите мат-часть:

Quote

Милли- (русское обозначение: м; международное: m)

Quote

Мега- (русское обозначение: М; международное: M)

Quote

Байт (русское обозначение: Б и байт; международное: B, byte)

Quote

Бит (русское обозначение: бит; международное: bit;)

Quote

Использование прописной буквы «Б» для обозначения байта соответствует требованиям ГОСТ и позволяет избежать путаницы между сокращениями от «байт» и «бит». Однако, следует учитывать, что в стандарте нет сокращения для «бит», поэтому использование записи «Гб» как синонима для «Гбит» неверно.

 

Share this post


Link to post
Share on other sites

27 минут назад, Mysteo сказал:

При попытке записать на SD карту файл более 7мб

 

27 минут назад, Mysteo сказал:

Скачивание файла происходят по частям через RLDP

Так вы записываете или скачиваете?

Так-то, наверное надо отключить кзширование, статей на тему много (https://www.google.com/search?q=Linux+fopen+кэширование), вот например https://www.opennet.ru/tips/info/2770.shtml

Или вот https://habr.com/ru/companies/otus/articles/706702/

Share this post


Link to post
Share on other sites

On 7/20/2025 at 6:28 PM, HardEgor said:

Так вы записываете или скачиваете

Скачиваю средствами приложение, через протокол, который позволяет по частям файл запросить с сервера, RLDP называется , и эти части записываю файл. 

За статьи спасибо , сейчас посмотрю.

On 7/20/2025 at 6:14 PM, blackfin said:

Четыре милли-бита это круто!!! )))

Спасибо за замечание, естественно речь была о МБ

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...