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

时间:2015-02-26 21:05:07

标签: c++ windows qt file

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

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

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不提供文件共享功能,除了“不关心”。