【发布时间】:2014-07-01 07:16:16
【问题描述】:
我正在寻找一种可移植的方式(Linux 和 Windows),以使文件只能由 1 个进程修改,而不能由 C/C++ 中的其他进程修改。
完整的要求是我想保留一个只能由 1 个正在运行的进程修改的文件,因为其他人应该只能读取它。
困难在于此过程使用供应商库,该库将在其生命周期(数十秒)内多次打开/关闭文件。
谢谢
【问题讨论】:
-
为什么不将默认文件属性设置为只读,然后让进程在想要更改该文件时将其更改为读+写。
-
我非常怀疑你可以在不修改供应商库的情况下做到这一点,或者如果可能的话,添加一些全局类型的锁。使用不同的解决方案重新设计整个想法也可能有效。 [user986959的想法行不通,因为一旦你改变了模式,所有其他人也被允许进入......]
-
所有的流程都在你的掌控之中吗?
-
Linux 只有咨询锁和完全弱权限系统,所以你是 SOL。在 Windows 上,它可能开箱即用(如果
fopen("w")通过FILE_SHARE_WRITE会中断,但默认选项是安全的) -
我认为您需要提供更多关于您如何与供应商库交互以及它如何打开文件的详细信息。您必须在库外部添加一个锁定功能。它的 api 是否允许您选择文件是以读/写方式打开还是以只读方式打开?能拦截打开文件吗?