#php #c #linux #synchronization #read-write
#php #c #linux #синхронизация #чтение-запись
Вопрос:
Я написал в коде PHP, что он «откроет» файл (назовем его TXT) и запишет туда выбранный флажок, затем позже другой процесс (назовем его PROC1- в коде c) должен прочитать файл (TXT).
Мне нужно синхронизировать его, я имею в виду заблокировать процесс (PROC1) от чтения, пока PHP выполняет запись в общий ресурс (TXT).
позаботится ли об этом fopen? Я думаю, что разница между ним и методом open()..
или, может быть, использовать pipe (), но, как я видел, он запускает только команды, а не открывает файл..
Заранее еще раз спасибо..
Комментарии:
1. На какой срок первый файл заблокирует текстовый файл? Пара микросекунд или час или два?
2. Если это инструмент IPC — тогда вам следует использовать каналы.
3. как использовать pipe (), но, как я видел, он запускает только команды, а не открывает файл..
4. Если вы хотите передавать данные из одного процесса в другой, загляните в proc_open .
Ответ №1:
Нет, fopen об этом не заботится. Вы можете использовать flock для синхронизации доступа к файлу.
Обратите внимание, что все процессы должны будут использовать flock () файл перед его использованием, это зависит от платформы, но flock () обычно является рекомендательной блокировкой, что означает, что любой может просто обойти блокировку, если пожелает (например, если он забудет вызвать flock())