Нет, Linux не имеет ни одного из этих флагов. В целом, в системах Unix любой процесс с соответствующими разрешениями может выполнять любые разрешенные операции с файлом в любое время.
Однако существуют средства блокировки, как с fcntl
, так и с flock
, которые позволяютвзаимодействующие процессы для блокировки чтения и записи файла или его частей для предотвращения непреднамеренных конфликтов. - это обязательная блокировка, которую можно выполнить с помощью fcntl
, но она ненадежна и не рекомендуется для ядра 4.5;вы можете увидеть справочную страницу fcntl(2)
для более подробной информации. Если ваша программа когда-либо будет работать по NFS, для блокировки предпочтительнее будет fcntl
, потому что flock
там не работает.
В качестве альтернативы, если вам нужен более простой интерфейс, вы можете использовать что-то вроде liblockfile , который обеспечивает простой, NFS-безопасный интерфейс для блокировки.
В общем, блокировка общего доступа, доступная в DOS и Windows, считается плохой идеей в Unix, поскольку она не позволяет процессам выполнять такие действия, как переименование. над файлами или другими операциями, которые, как ожидается, будут доступны и успешны.