Форум программистов, компьютерный форум CyberForum.ru

С++ Сохранение данных при сбое системы, класс BackUp, temp файл - C++

Восстановить пароль Регистрация
 
andriii
Сообщений: n/a
02.12.2011, 18:21     С++ Сохранение данных при сбое системы, класс BackUp, temp файл #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 файл постоянно, после того как Вы закончите трансакацию, чтобы файла этого не было.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 18:21     С++ Сохранение данных при сбое системы, класс BackUp, temp файл
Посмотрите здесь:

Сохранение данных при выключении C++
C++ Ошибка при записи данных в файл
C++ Файл: При сохранение в файл big100.txt в блокноте отображаются иероглифы, почему?
C++ Работа со структурой данных, чтение/сохранение во внешний файл
При выводе данных в файл стереть всё, что в нём было C++
Сохранение и загрузка данных в файл C++
C++ Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки"
C++ Создать класс данных Person и класс отображения данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aligator33
11 / 11 / 8
Регистрация: 17.08.2015
Сообщений: 113
06.10.2015, 23:56     С++ Сохранение данных при сбое системы, класс BackUp, temp файл #2
Пост хоть и старый но решение я вижу так и не было предложено. Я тоже новичок и мне интересно реализация.
планирую следующий интерфейс:

C++
1
2
3
4
5
6
7
8
9
10
class cBackUp
{
    char *mFileName; 
    int mnSizeFile; 
public:
    cBackUp(const char *sFileName); 
    ~cBackUp(); 
    int WriteFile(const char *sFileName, void *pData, int nBytes);
    void *ReadFile(const char *sFileName, int *nReadedBytes, int *pErorCode);
};
Yandex
Объявления
06.10.2015, 23:56     С++ Сохранение данных при сбое системы, класс BackUp, temp файл
Ответ Создать тему
Опции темы

Текущее время: 03:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru