linux - Linux / GCC 是否支持文件共享允许-拒绝类型?
问题描述
回到 DOS,Borland C/C++ 你O_DENYxxx
在open()
. 在 MS Visual Studio / Windows 上sopen()
,您有一些可用的open()
标志O_SHARE_xxxx
(例如 ibm 文档)。但我似乎无法找到 Linux 有什么类似的工作方式?
解决方案
不,Linux 没有这些标志。一般来说,在 Unix 系统上,任何具有足够权限的进程都可以随时对文件执行任何允许的操作。
但是,withfcntl
和 with都有锁定功能,flock
允许协作进程对文件或其部分进行读写锁定,以防止意外冲突。可以使用强制锁定fcntl
,但从内核 4.5 开始不可靠且已弃用;您可以查看fcntl(2)
手册页以获取更多详细信息。如果您的程序将在 NFS 上运行,fcntl
则首选锁定,因为flock
在那里不起作用。
或者,如果您想要一个更简单的接口,您可以使用类似liblockfile的东西,它提供了一个简单的、NFS 安全的锁定接口。
一般来说,在 DOS 和 Windows 上可用的共享锁定在 Unix 上被认为是一个坏主意,因为它阻止进程执行重命名文件或其他被广泛预期可用并成功的操作。
推荐阅读
- tf.keras - tf.keras 模型的输入形状不匹配
- c# - 如何创建资源库以在不同项目中使用图片?时间:2019-06-10 标签:c#,winforms
- python - ImportError:尝试在烧瓶中没有已知父包的相对导入
- python - numpy 点积如何工作
- python - 在python中拆分具有多个分类值的数据框标签以编码标签
- xml - 如何使用 xml-patch 和 xpath 修补带有命名空间的 xml 文件?
- bash - TeamCity cli 请求
- sql - 即使值为空,也可以获得过去 12 个月的总销售额
- javascript - “无效的钩子调用。只能在函数组件的主体内部调用钩子”问题
- javascript - 如何从另一个函数中停止一个函数