锁定文件以供多个程序访问

时间:2014-07-02 02:13:40

标签: winapi locking mutex

我有两个Win32程序:"程序A",一个Web界面,以及"程序B",一个工作程序,对一组文件进行操作。 "计划A"告诉"程序B"对一组文件执行操作,"程序B"这样做,并向"程序A"发出信号。已经完成了。

现在,情况如下:在不同的计算机上可能有多个"程序A"程序B,访问存储在网络共享上的文件。我需要确保只有一个"程序B"正在一次访问一组文件。

我可以使用锁定文件来执行此操作,但是这些问题(例如,如果拥有进程崩溃则不会消失)我需要处理。我不认为我可以使用传统的文件锁定,因为我的架构需要"程序A"控制锁定的同时"程序B"访问文件。有没有我没有看到的解决方案,例如"网络范围的互斥"?

2 个答案:

答案 0 :(得分:1)

如果使用FILE_FLAG_DELETE_ON_CLOSE创建“锁定文件”,即使进程崩溃,也应该删除该文件。 (我不完全确定这也发生在网络驱动器上)。

答案 1 :(得分:1)

锁定文件应该是您所需要的。你只需要选择说&#34的语义;如果我不能打开相关的锁定文件进行独占访问,那么这组文件就被其他人锁定了。而不是"如果关联的锁文件存在,那么这组文件将被其他人锁定。

如果其中一个工作服务器崩溃(整个服务器,而不是你的程序),你仍然可能遇到需要管理员干预的问题,但这应该是非常罕见的,这是可以的;如果任何特定的文件集被锁定了很长时间,请确保您的逻辑引发某种警报。