Как ограничить доступ к файлу от использования (записи / чтения) другим процессом или функцией в C? - PullRequest
0 голосов
/ 09 октября 2019

У меня сейчас проблема с обновлением данных, записанных в файле на C. Я создал функцию с именем preview_data () в цикле, которая просматривает все файлы, записанные на INFOS.DAT постоянно. Я также создал функцию с именем update_data () , которая изменяет INFOS.DAT , если доступны новые данные. Я использую fwrite () и fread () для изменения файла.

Однако я заметил, что изменения, сделанные update_data () не действует. Я подозреваю, что это потому, что INFOS.DAT каждую секунду обращается к preview_data () .

Теперь, с моим вопросом, как ограничить открытие файла? если к нему обращается другой процесс? Есть ли способ узнать это, чтобы я мог создать условие перерыва в моей программе? Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Чтобы ограничить доступ к файлу, нам нужно заблокировать файл. Блокировка файла может быть выполнена двумя способами:
1) flock
2) fcntl

Ссылка по ссылке: https://gavv.github.io/articles/file-locks/

0 голосов
/ 09 октября 2019

Это может произойти, если вы используете один и тот же дескриптор файла для открытия и закрытия файла. Вы можете решить эту проблему, установив блокировку «MUTEX» на дескриптор файла во время чтения или записи в файл.

Следовательно, если вы читаете файл, будет блокировка, которая не позволит записывать в файл одновременно и наоборот.

ПРИМЕЧАНИЕ. Обратите внимание: возможно, вам придется пойти на компромисс с производительностью программы.

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