【问题标题】:How lock a file in windows using c++?如何使用 C++ 在 Windows 中锁定文件?
【发布时间】:2011-07-26 15:48:58
【问题描述】:

如何将 Windows 中的文件锁定为只有当前线程(同一进程中没有其他线程,也没有其他进程)可以访问(读/写)该文件?

如果可能,请告诉我一些 fcntl-like 解决方案(锁定具有其描述符的文件的解决方案)。但无论如何也欢迎其他解决方案。

【问题讨论】:

    标签: c++ file file-locking


    【解决方案1】:

    在 Windows 中,您可以使用 API 函数 CreateFile 并指定 0 作为共享模式以独占访问权限打开文件。更多详情请访问 this MSDN linkthis MSDN link

    【讨论】:

    • 比我的解决方案 +1 好多了
    • 如果后续线程都使用CreateFile API(没有传递返回的文件HANDLE),那么对CreateFile的调用应该失败,如果我理解的话文档正确。但是,我没有尝试专门这样做(线程间)。
    【解决方案2】:

    使用WinAPI调用LockFileHere is a example对其使用。但是,这只会保护您免受其他进程接触您的文件,它仍然允许同一进程中的其他线程使用该文件。

    编辑: 我没有看到这是 C++ 抱歉,我只知道线程间 c# 解决方案,但是 MSDN 链接至少可以让您开始防止其他进程接触您的文件。

    【讨论】:

    • Mihran:您可以从 C++ 函数调用该函数。这是 Win32 C API。
    • 请注意,LockFile 锁定文件以供单个进程独占使用,而不是由单个线程使用。为确保后者,您必须在流程中构建自己的锁定机制。
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多