c++ - 独占打开文件/锁定文件

标签 c++ windows qt qfile

我想锁定现有文件以防止其他进程使用(读取和写入)。也就是说,此进程或任何其他进程随后尝试打开文件的任何尝试都应失败并出现“拒绝访问”错误。

CreateFile WINAPI 函数有一个 dwShareMode 参数正是这样做的,我正在寻找类似的功能,同时仍然能够使用 QFile

最佳答案

我发现的一种方法是使用 LockFile打开文件后,在底层操作系统句柄上。

请注意,LockFile 的行为略有不同 - 后续尝试打开成功,但实际读取或写入将失败并显示 ERROR_LOCK_VIOLATION

#include <windows.h>
#include <io.h>
bool lockFile(QFile *file) {
    return (bool) LockFile((HANDLE) _get_osfhandle(file->handle()), 0, 0, -1, -1);
}
void test() {
    QFile f("test.txt");
    f.open(QIODevice::ReadOnly);
    lockFile(&f);
}

关于c++ - 独占打开文件/锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11897359/

相关文章:

c++ - 正确使用 CommandLineToArgvW?

javascript - 在 Mac OS 上启动 Node.JS 程序

windows - 如何让 USB 设备加载我的功能驱动程序?

c# - 如何以编程方式更改文件夹审核选项下的 "Applies To"字段 (.NET)

c++ - 如何读取 stdin 以 qt 结尾?

C++文件IO和分隔符拆分

c++ - 如何在 Qt 的层次结构的根小部件中获取鼠标按下事件

c++ - Cmake 拒绝找到正确的 MinGW 文件夹

c++ - 如何在 C++ 中将文字字符串和 MACRO 连接到有效字符串

qt - 使用 QDoc 记录内联函数和纯虚函数