C ++锁定后读取文件

时间:2014-09-12 09:24:44

标签: c++ windows file locking

我正在首次处理文件锁定问题,并且无法在Google中找到解决方案的相关帖子。

我使用此代码锁定文件,以锁定文件。

ifile = CreateFileW(FileName, GENERIC_READ |  GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_DELETE | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

在下一行中,我尝试使用

打开同一个文件
errno_t ErrorNumber = _wfopen_s(FileHandle, FileName, "rb");

目的是锁定文件以防止任何其他进程写入文件,而此函数正在读取其内容。 使用" rb"打开文件时,我得到了EACCESS:13错误代码。

任何想法为什么以及如何在锁定后启用读取文件?

由于 萨贾塔

1 个答案:

答案 0 :(得分:0)

在Win32上创建一个“锁定文件”,不允许其他进程打开它:

ifile = CreateFileW(FileName, GENERIC_READ |  GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, NULL);
共享模式的

CREATE_NEW0可确保您的流程仅打开文件,FILE_FLAG_DELETE_ON_CLOSE确保在您关闭文件时自动删除该文件或你的过程(天堂禁止)崩溃。

这是在Win32上实现跨进程锁定的一种有点笨拙的方法。共享Mutex是为解决这个问题而发明的。