|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
Запись на SD карту в bin файл02.02.2018, 15:47. Показов 2527. Ответов 13
Метки нет (Все метки)
День добрый, возникла такая проблема:
Написал программу, которая делает следующее: принимает данные из UDP и пишет в файл на SD карте. Есть два варианта записи: 1) в bin файл, просто содержимое пакетов 2) в pcap файл (вместе с pcap заголовками и ethernet заголовками) По сути в способе записи разницы практически и нету. Но получается следующее: Ставлю карту на 64 гига, работают оба способа. Ставлю карту на 256 гигов, запись pcap работает, а запись bin - файл создает, а внутрь ничего не пишет. Обе карты форматнул в формат ext, монтирую командой umount. Разница только в том, что 1ю я форматнул из под виртуалки с 16й ubuntu, а вторую из под арма с 14й ubuntu. Подскажите пожалуйста, в чем может быть проблема со 2 флешкой Добавлено через 1 час 55 минут Уточню. Проблема не повторяется от раза к разу. После нескольких выниманий флешки и ребутов арма - вроде начало нормально писать. Но ошибка иногда повторяется. От чего это может зависеть?
0
|
|
| 02.02.2018, 15:47 | |
|
Ответы с готовыми решениями:
13
Чтение и запись в файл .bin (MFC)
|
|
Почетный модератор
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|
| 02.02.2018, 18:21 | |
|
umount() всегда нормально завершается? Возвращаемое значение анализируете?
Можно ещё перед umount() выполнить sync() на всякий случай.
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 02.02.2018, 18:48 [ТС] | |
|
Humanoid, Вроде нормально, ошибок не выдает.
Да и между разными вариантами записи я не делаю umount. Т.е. когда пишу в файл с расширением pcap при помощи fprintf, все ок, затем безо всякого umount пытаюсь писать в файл с расширением bin - файл создает, но не пишет. Команду использую одну и ту же по идее.
0
|
|
|
Почетный модератор
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|
| 03.02.2018, 00:58 | |
|
А вы не забываете закрывать файл через fclose() ? Просто файл создаётся при открытии. При записи данные вначале попадают в буфер в оперативной памяти, и только когда буфер заполняется или происходит закрытие файла, то тогда данные записываются на диск. Так же, если файл не закрыть, а внезапно отключить носитель информации, то тоже он может оказаться пустым (я такое ещё давно на NTFS наблюдал).
В общем, поведение очень похоже на то, что файл не закрывается. Может, у вас в коде какое-то условие есть, по которому вы прерываете запись, а сразу отключаете SD-карту? Хотя, при открытом файле umount() не должен проходить. Проверьте ещё, что при вызове fprintf() указываете правильный файловый дескриптор. У меня других идей нет.
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 03.02.2018, 11:10 [ТС] | |
|
Humanoid, Да, причем открытие происходит, когда udp connect есть, т.е. с соединением все в порядке.
Носитель я до fclose точно не отключаю. А насчет буффера - я с таким тоже сталкивался, но сомневаюсь, что тут такая ситуация. Как минимум по двум причинам: 1) запись в pcap проходит нормально, т.е. я в реальном времени вижу как изменяется место на карте; 2) на другой сд карте даже при записи в bin я вижу так же изменение размеров. Мне кажется, что тут есть что-то, что я не учитываю и что зависит скорее от sd карты или системы. Например если ее форматнуть с 16й убунты, то после этого она сразу начинает писать. А вот как повторить такую ошибку - я пока не разобрался
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|
| 03.02.2018, 14:36 | |
|
Может, стоит писать на создавая файловой системы? Считать потом сырой файл через dd и анализировать без спешки
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 03.02.2018, 21:15 [ТС] | |
|
COKPOWEHEU, Это как? поясните пожалуйста?
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
||||||
| 03.02.2018, 23:58 | ||||||
|
например так
0
|
||||||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 04.02.2018, 00:03 [ТС] | |
|
COKPOWEHEU, а понял, у меня mmcblk2p1, но думаю принципиально это ничего не меняет... попробовать можно. Хотя звучит странно... писать то будет, в другом формате ведь работает все....
0
|
|
|
Почетный модератор
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|
| 04.02.2018, 15:46 | |
|
Только имейте ввиду, что эти действия уничтожат файловую систему.
На мой взгляд, лучше попробовать какие-нибудь костыли с добавлением задержек перед размонтированием, дописать в конец файла пару МБ нулей и т.п. А запись в файл устройства - это не самый хороший вариант. Особенно, когда нужно несколько файлов... фактически, придётся изобретать свою файловую систему.
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 04.02.2018, 15:48 [ТС] | |
|
Humanoid, не, такой вариант тогда не пойдет. Мне надо чтобы была стандартная файловая система.
А вот насчет размонтирования я не совсем понимаю - как оно будет влиять?
0
|
|
|
Почетный модератор
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|||||||||||||||||
| 04.02.2018, 16:12 | |||||||||||||||||
|
А вообще, я предлагаю написать вам совсем простенькую программу... например:
А если и с этой простой программой файл будет создаваться повреждённым, то тут уже можно начать экспериментировать и искать ситуацию, когда баг не проявляется. Например, перед umount() можно добавить
Если не секрет... зачем для записи бинарных данных использовать fprintf() ? Конечно, это дело вкуса... но для бинарных данных я бы использовал fwrite().
0
|
|||||||||||||||||
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|||
| 04.02.2018, 16:26 [ТС] | |||
|
1) делаю mount; 2) пишу в bin - не работает, файл создается, но не пишется; 3) пишу в pcap - все нормально пишется; 4) в bin - не работает; 5) pcap - работает; ....и таких итераций несколько, причем неважно с какого типа начинать (можно начать с pcap и будет работать так же) N) в конце уже делаю umount. Так что ситуация не меняется от того, с какого формата начать, и каким закончить.
0
|
|||
|
Почетный модератор
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
||
| 04.02.2018, 18:25 | ||
|
fwrite() должен возвращать количество элементов (3 аргумент)... например, fwrite(buf, 1, 45, f) должен вернуть число 45. fclose() должен возвращать 0. Если вернул что-то другое, то то это ошибка и нужно анализировать errno. У убедитесь, что записываете не пустой буфер. А может, просто для bin в коде ошибка и в функции fwrite() указываете нулевой размер. Сразу после вызова fwrite() выведите в консоль отладочную информацию и посмотрите, какие размеры записываются и какой результат вернула функция.
0
|
||
| 04.02.2018, 18:25 | |
|
Помогаю со студенческими работами здесь
14
Не могу установить ни одну программу /bin/sh: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or
Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой bin файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|