Реализация блокировок файлов для создания копии файла - PullRequest
1 голос
/ 09 февраля 2010

Разработка программы на C для file-copy, где два процесса работают вместе для выполнения задачи Родительский процесс получает исходное имя файла и имя файла назначения из командной строки. Открывает исходный файл в режиме чтения.

Использовать общую блокировку исходного файла в обоих процессах. Используйте эксклюзивную блокировку файла назначения. Выполняйте операции чтения / записи в 256-байтовых блоках. Вы должны заблокировать как можно меньшую часть файла за один раз.

Как узнать, когда проверять блокировки, а когда ставить блокировки? Я не могу найти хороший ресурс, который содержит пример. Я попытался прочитать его из «Руководства Beej по IPC», но у него нет полного примера. Я знаю, что должен использовать fcntl (), но как и когда? Просьба кто-нибудь дать псевдокод программы ..

1 Ответ

5 голосов
/ 09 февраля 2010

См. Мой ответ Как я могу скопировать файл в Unix, используя C в StackOverflow. Он использует элементарную блокировку и читает комментарии, которые caf упомянул с помощью lockf, есть более надежный способ сделать это с помощью fcntl. Подробный документ об этом есть на сайте GNU здесь . Вот код opengroup , который демонстрирует использование fcntl для блокировки.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

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