c++ - 在 Windows 上使用 C++ 锁定文件

标签 c++ windows file

我有一个程序写入/读取一个文件,我想为我的应用程序的其他实例锁定该文件。我该怎么做(在 C++ Visual Studio 2003 中)? 我尝试使用 _locking() 但后来我自己在尝试读/写时也无法访问文件(在同一实例中)。 我知道有一个 LockFile() 选项,但不知道如何正确设置它。 请帮助我。

最佳答案

您可以简单地使用 Win32 API CreateFile然后指定无共享权限。这将确保没有其他进程可以访问该文件。

dwShareMode DWORD 指定您想要的共享类型,例如 GENERIC_READ。如果指定 0,则表示不应授予任何共享权限。

例子:

HANDLE hFile = CreateFile(_T("c:\\file.txt"), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);

如果你只想锁定文件的特定部分,你可以使用LockFileLockFileEx .

例子:

 //Lock the first 1024 bytes
 BOOL bLocked = LockFile(hFile, 0, 0, 1024, 0);

For locking on other platforms please see my post here .

关于c++ - 在 Windows 上使用 C++ 锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/853805/

相关文章:

windows - 如何在 Windows Server 2016 上为托管服务器安装 Web Deploy

c++ - Winsock 重新定义错误

javascript - 使用 require.js 在多个 JS 文件中拆分应用程序的 javascript

c++ - 如何解决 ‘std::list<int>*’ 到 ‘std::list<int> [0]’ 分配中的不兼容类型?

c++ - 通过引用传递创建的对象 'on the fly'

windows - 在哪里可以找到 Dart 语言的解释器/编译器?

java - 如何使用java从字符位置获取文件中的行号

c++ - C++ 中的内存映射二进制日志记录

c++ - 我什么时候需要释放内存?

javascript - 在 javascript 中从我的 Parse 数据库中获取图像?