1

是否有一个标准的 C/C++ 函数可以在打开文件之前检查文件是否被另一个进程使用?

4

3 回答 3

0

如果您尝试使用

fopen();

并且它返回一个错误,那么以下是可能的:

  • 文件不存在

或者

  • 文件正被另一个进程使用。
于 2013-07-23T08:32:36.613 回答
0

如果我们稍微扭转一下,说你如何只给一个进程对文件的访问权限,或者可能是多个进程共享对文件的写访问权限而没有问题。然后我会建议看这些:

LINUX 文件锁定

多操作系统文件锁定概述

于 2013-07-23T09:32:17.590 回答
-1

确保文件仅由一个进程独占打开的一种方法是尝试创建一个锁定文件,通常带有 .LCK 扩展名。

例如,如果文件名是 foo,则尝试创建 foo.LCK。如果成功,将进程的pid写入foo.LCK文件,这样以后进程在不再需要锁时由于某种原因没有删除LCK文件,你可以删除LCK文件。

创建 .LCK 文件后,所有其他创建它的尝试都将失败。

另一种方法是使用flock()。

在这两种情况下,锁定都是建议性的,而不是强制性的。即非合作进程可以自由地做它想做的事。

于 2013-07-23T01:53:44.950 回答