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

5 c++ windows file

我有一个程序从文件写入/读取,我想锁定我的应用程序的其他实例的文件.我怎么能这样做(在c ++ visual studio 2003中)?我尝试使用_locking(),但是当我尝试读/写(在同一实例中)时,我自己也无法访问该文件.我知道LockFile()有一个选项,但不知道如何正确设置它.请帮我.

Bri*_*ndy 14

您只需使用Win32 API CreateFile,然后指定不共享权限.这将确保没有其他进程可以访问该文件.

dwShareMode DWORD指定您希望的共享类型,例如GENERIC_READ.如果指定0则表示不应授予共享权限.

例:

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

如果您只想锁定文件的某个部分,可以使用LockFileLockFileEx.

例:

 //Lock the first 1024 bytes
 BOOL bLocked = LockFile(hFile, 0, 0, 1024, 0);
Run Code Online (Sandbox Code Playgroud)

要锁定其他平台,请在此处查看我的帖子.


归档时间:

查看次数:

17059 次

最近记录:

13 年,9 月 前