【发布时间】:2013-03-13 21:07:02
【问题描述】:
在我的应用程序中,用 C 编写,在 Windows-XP 下: 如何检查文件是否已被另一个应用程序打开? 一种选择是重命名文件,并检查它是否被重命名。 另一种选择是打开文件进行附加。 但是这些选项非常耗时。 有没有其他更省时的解决方案?
【问题讨论】:
-
您无法轻松可靠地检测到文件已被另一个进程打开。原因是操作系统允许以非独占模式打开文件,这意味着多个进程可以同时打开同一个文件,打开成功的事实并不一定意味着它是唯一的打开。最糟糕的是,即使您以某种方式检测到文件已被另一个进程打开(或没有),当您使用该知识时,该文件可能会被该进程关闭(或者它可能会被打开,如果您之前检测到它未打开)。
-
所以,问题归结为您希望如何使用这些信息,以及使用它是否是解决手头问题的正确方法。
标签: c windows-xp rename file-exists