andriii
|
|
1 | |
С++ Сохранение данных при сбое системы, класс BackUp, temp файл02.12.2011, 18:21. Показов 1762. Ответов 1
Метки нет (Все метки)
Дорогие программисты, помогите, пожалуйста, советом со следующей задачей (хотя бы направьте в нужное русло или что почитать порекомендуйте).
Заранее огромное спасибо. Новичок. ЗАДАНИЕ. Записать файл Данные. Записать функцию fOpen() с режимом работы файла W (режим стирания). Т.е. есть файл, его открыли, данные прочитали, загрузили в оперативку, после этого программа работала, наработала кучу информации, собираемся по-новому перезаписать этот файл. В момент вызова fOpen() выключается сеть. Получается что fOpen() вызван, файл уничтожился, в оперативке уже ушло, данные потерялись. Создать класс BackUp для контроля потери данных. А именно как контролировать. Есть программа требующая записать данные в файл. Формат записи на совести программы. Вспомните как работают функции fRead, fWrite: они просто берут адрес, указатель на кусок памяти, его размер и имя файла и записывают этот файл. Что в файле не имеет значения. Задача заключается в переносе информации. Рассмотреть вариант трансакции - программа выполняет работу с файлом через скрипт класс BackUp, где прописана логика как бороться с тем, что данные могут быть записаны. В итоге программа хочет перезаписать файл, она дает BackUp команду (вызывает его функцию). BackUp перед тем как стереть файл создает рядом temp файл (где полностью копируется, что было в файле или в оперативке, что еще лучше) и записывает в temp файл. Желательно в третьем файле BackUp написал: создал temp файл. Далее BackUp пытается сделать перезапись, если в момент перезаписи выключается свет temp файл есть, а в log записано первое действие, в соответствии с тем, что когда в следующий раз программа захочет получить данные она через класс BackUp данные захочет прочитать. Класс BackUp открывает log и видит, что первая часть скрипта сделана, а вторая часть скрипта не сделана, значить грузиться надо не из файла, который не существует, а грузиться надо с temp файла и при чем срочно его прочитать и создать новый рабочий файл и только потом эти данные запустить, положить в оперативку, и только потом отдать эти данные Вашей программе. Чтобы программа гарантировано работала и чтобы ситуация с отключением света ни как не сказалась на потере данных. Вот лежит рабочий файл, если его сразу стали перезаписывать. Далее вызываем fOpen. И в режиме W и вдруг файл сразу уничтожился, а файл не успели вызвать, данные все потерялись: и здесь, и в оперативке. А если мы в оперативке создали рядом temp файл, а в log записали: temp файл создан (или любое число в .h файле). После этого пытаемся сделать fOpen(), если свет отключился у нас лежит копия и есть соответствующие записи в log. В .h файле прописать, что это последняя трансакция temp файла которая есть, т.е. предусмотреть идентификатор, который будет обозначать, что это последняя запись (не старый temp файл, а новый temp файл). Либо убивать старый temp файл постоянно, после того как Вы закончите трансакацию, чтобы файла этого не было. |
02.12.2011, 18:21 | |
Ответы с готовыми решениями:
1
TrueCrypt - риск потери данных при аппаратное сбое Backup системы при помощи dd При сохранение файла word (права доступа на сохранение ограничены) появляется пустой файл Восстановление системы. Сохранение данных |
18 / 18 / 16
Регистрация: 17.08.2015
Сообщений: 125
|
||||||
06.10.2015, 23:56 | 2 | |||||
Сообщение было отмечено как решение
Решение
Пост хоть и старый но решение я вижу так и не было предложено. Я тоже новичок и мне интересно реализация.
планирую следующий интерфейс:
0
|
06.10.2015, 23:56 | |
06.10.2015, 23:56 | |
Помогаю со студенческими работами здесь
2
Как при сбое удержать программу и среду VB в Windows-е? Потерял данные при сбое во время разбивки логических дисков UPS для корректного завершения работы ПК при сбое электропитания Нужна оценка результатов Chkdsk при сбое внешнего usb диска 1 Тб Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |