所以,我試圖鎖定它後複製文件!但是我得到了GetLastError()= 32 - 「進程無法訪問該文件,因爲它正在被另一個進程使用。」可以在LockFileEx後複製文件嗎?
按順序,使用該文件的過程是相同的,因爲它先被鎖定。我正在使用多進程應用程序,並使用LockFileEx排除其他進程處理同等文件信息。另外,我一直在閱讀LockFileEx文檔,並且在鎖定它之後沒有發現與CopyFile的不可能性有關的內容。
HANDLE cfile;
bool alreadyExistFile = FALSE;
OVERLAPPED sOverlapped;
sOverlapped.Offset = 1;
sOverlapped.OffsetHigh = 0;
cfile = CreateFile(TEXT("CounterSeedAssincrono.csv.csv"),
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);
LockFileEx(cfile, LOCKFILE_EXCLUSIVE_LOCK |
LOCKFILE_FAIL_IMMEDIATELY, 0, 10000, 0, &sOverlapped);
CopyFile(TEXT("CounterSeedAssincrono.csv"),
TEXT("CounterSeedAssincrono_A.csv"), alreadyExistFile);
if (alreadyExistFile == FALSE)
cout << "CopyFile Failed -> " << GetLastError() << endl;
UnlockFileEx(cfile, 0, 10000, 0, &sOverlapped);
CloseHandle(cfile);
有人知道是否有可能做我正在嘗試的?我使用Windows和VS 2015
Quote:「如果鎖定過程第二次打開文件,它不能通過此第二個句柄訪問指定區域,直到它解鎖區域。」是的,這就是CopyFile所做的。 –
是的,謝謝。我解決了所有指令後CopyFile的問題,但我的邏輯問題依然存在。其實,我需要類似於文件「重命名」的東西,如果我只用一個函數重命名多個進程就可以做到這一點。 – GLMF