Функция flockfile
блокирует не файл, а структуру данных FILE
, которую процесс использует для доступа к файлу.Так что речь идет о представлении в адресном пространстве файла процесса, но не обязательно о самом файле.
Даже в процессе, если у вас есть разные FILE
открытые для одного и того же файла, вы можетезаписывать в этот файл одновременно, даже если вы заблокировали каждую из FILE
с помощью flockfile
.
. Для блокировки самого файла посмотрите на flock
и lockf
, но будьте осторожнычто правила их эффектов для доступа к файлам через разные потоки одного и того же процесса сложны.