我使用Qt创建了一个写入文件的c ++程序。该程序可能有多个实例,每个实例都通过本地网络访问该文件。
我正在使用QFile::ReadWrite
作为我的文件打开选项。如果一个进程在此模式下打开文件,我发现其他进程也可以打开它进行写入。我使用file.write(text)
写入文件。如果两个进程都试图在同一时间执行此操作会发生什么? Windows会处理这个吗?
我想知道是否需要使用Window CreateFile(...)
重新实现并且需要使用0作为共享模式?
感谢。
答案 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不提供文件共享功能,除了“不关心”。