С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Инициализация ссылок http://www.cyberforum.ru/cpp-beginners/thread397314.html
Непонятно почему такой синтаксис инициализации ссылок ошибочен: int * p(nullptr); int * &pref(p); Требуется вот так: int * p(nullptr); int * (&pref)(p); Можно было бы понять, что мол...
C++ Массив (одномерный и двумерный, поиск локальных максимумов и кол-ва положительных и отрицательных элементов) Две задачи, которые нужно реализовать на c++ в борланде. Вот первая (по одномерному массиву): В массиве А(n) найти и напечатать номера (индексы) локальных максимумов, то есть таких {a}_{i}, что... http://www.cyberforum.ru/cpp-beginners/thread397309.html
Из одномерного массива сделать двумерный C++
Помогите пожалуйста из одномерного массива X получить квадратную матрицу А8*8 ,элементами которо являються числа,х1 х2 ....х4 ,расположеные в ней по схеме 0 15 16 31 32 47 48 63 1 14 17 30 33 46...
C++ Задача на вычисление
Вычислить сумму кубов всех черных чисел, лежащих в диапозоне от Х до У, где Х и У - вводимые с клавиатуры натуральные числа.
C++ Как записать функцию http://www.cyberforum.ru/cpp-beginners/thread397287.html
(1+x)^3h e^-x Добавлено через 25 минут ?????
C++ У меня одного не работает API-функция, устанавливающая новый обработчик исключений? Ребята, кто заинтересовался, потестите, результаты сюда. В первую и основную очередь интересует компилятор g++ #include <windows.h> #include <iostream> #include <stdio.h> #include <excpt.h> ... подробнее

Показать сообщение отдельно
andriii
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 2

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

02.12.2011, 18:21. Просмотров 806. Ответов 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 файл постоянно, после того как Вы закончите трансакацию, чтобы файла этого не было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.