首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows XP下,使用C语言:检查文件是否已打开

在Windows XP下,使用C语言:检查文件是否已打开
EN

Stack Overflow用户
提问于 2013-03-24 17:36:47
回答 2查看 306关注 0票数 4

在Windows-XP下用C语言编写的应用程序中:如何检查文件是否已被其他应用程序打开?一种选择是重命名该文件,并检查它是否被重命名。另一种选择是打开要追加的文件。但这些选项非常耗时。有没有其他更省时的解决方案呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-24 20:29:41

exclusive mode中打开一个文件。

代码语言:javascript
复制
HANDLE file = CreateFile(_T("MyFile"), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL);
if (file != INVALID_HANDLE_VALUE)
{
    // file is not used by anyone else
    CloseHandle(file);
}
票数 2
EN

Stack Overflow用户

发布于 2013-03-24 20:36:16

Windows API中不存在用于检查函数是否在其他应用程序中打开的函数。如果它确实存在,它将受到竞争条件的影响。

假设您首先检查了一个文件是否已经打开,结果返回的结果是该文件当前未打开。然后你继续打开它,但在此期间,其他人已经打开了。则您的打开尝试将失败。

因此,要知道是否可以打开文件,唯一的方法就是尝试这样做。如果打开文件的方式阻止了您尝试打开它,则该尝试将失败。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15596944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档