C / C ++标准函数检查另一个进程是否使用了某个文件?

时间:2013-07-23 00:43:29

标签: c++ c

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

3 个答案:

答案 0 :(得分:0)

如果您尝试使用

打开文件
fopen();

并返回错误,然后可以执行以下操作:

  • 文件不存在

OR

  • 另一个进程正在使用该文件。

答案 1 :(得分:0)

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

LINUX File Locking

Multiple OS File Locking Overview

答案 2 :(得分:-1)

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

E.g。如果文件名是foo,则尝试创建foo.LCK。如果成功,请在foo.LCK文件中写入进程的pid,以便稍后如果进程由于某种原因在不再需要锁定时不删除它,则可以删除LCK文件。

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

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

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

相关问题