Два приложения, читающие и записывающие в один файл, как предотвратить сбои или пропущенные данные при чтении? - PullRequest
0 голосов
/ 08 декабря 2011

Я пишу два приложения: одно для записи данных в файл и другое для чтения данных из файла. Эти программы будут запущены одновременно. Я боюсь, что одно приложение может записать в файл некоторые данные, а затем другое приложение попытается прочитать их до того, как оно будет завершено. Это может привести к потере данных, зашифрованным данным или сбоям.

Не уверен, что я могу сделать ... Есть ли способ заблокировать файл во время использования (устанавливается из каждого приложения)?

(Примечание: я не буду использовать базу данных.)

Я использую VS C ++ 6.0 ... это одно из требований компании к старому программному обеспечению.

1 Ответ

1 голос
/ 08 декабря 2011

Вы должны использовать какую-то синхронизацию между двумя процессами. Например, создайте именованное событие ( CreateEvent с именем lpName, которое не равно NULL). Инициализируйте событие на

CreateEvent(NULL /*lpEventAttributes*/, FALSE /*bManualReset*/, TRUE /*bInitialState*/, "AnyUniqueNameThatYouChoose"/*lpName*/);

Таким образом, когда один из процессов хочет использовать файл, он должен сначала WaitForSignleObject для события. Когда это будет сделано, он должен SignalEvent, что позволит другому процессу получить доступ к файлу.

Кстати - VC6 - действительно плохой компилятор. Вы должны рассмотреть возможность обновления до более новой версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...