gpt4 book ai didi

c++ - Windows 是否允许同时写入文件?

转载 作者:可可西里 更新时间:2023-11-01 11:28:11 33 4
gpt4 key购买 nike

我已经使用 Qt 创建了一个写入文件的 C++ 程序。这个程序很可能有多个实例,每个实例都通过本地网络访问文件。

我正在使用 QFile::ReadWrite 作为我的文件打开选项。如果一个进程以这种模式打开文件,我发现另一个进程也可以打开它进行写入。我使用 file.write(text) 写入文件。如果两个进程同时尝试执行此操作,会发生什么情况? Windows 会处理这个吗?

我想知道是否需要使用 Window 的 CreateFile(...) 重新实现并使用 0 作为共享模式?

谢谢。

最佳答案

Qt是OpenSource的,所以只看里面没有问题(qfsfileengine_win.cpp):

bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
{
...
// All files are opened in share mode (both read and write).
DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
...
// Create the file handle.
fileHandle = CreateFile((const wchar_t*)fileEntry.nativeFilePath().utf16(),
accessRights,
shareMode,
&securityAtts,
creationDisp,
FILE_ATTRIBUTE_NORMAL,
NULL);

因此 Qt 除了“不关心”之外不提供任何文件共享功能。

关于c++ - Windows 是否允许同时写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752720/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com