Я бы категорически не согласился с утверждением, что fopen
предпочтительнее, чем open
. Невозможно безопасно использовать fopen
при записи файла в каталог, доступный для записи другим пользователям из-за уязвимостей / условий гонки по символическим ссылкам, поскольку опция O_EXCL
отсутствует. Если вам нужно использовать stdio в системах POSIX, лучше использовать open
и fdopen
, а не вызывать fopen
напрямую.
Теперь, что касается блокировки, это зависит от того, что вы хотите сделать. POSIX не имеет обязательной блокировки, как Windows, но если вы просто хотите убедиться, что вы работаете с новым файлом и не забиваете существующий файл или не переходите по символической ссылке, используйте опции O_EXCL
и O_NOFOLLOW
, в зависимости от ситуации. Если вы хотите сделать кооперативную блокировку за пределами первоначального открытия, используйте fcntl
блокировки.