안녕하세요..
도움을 많이 받아 미력이나마 보탬이 되고자 올리네요...
HANDLE hFile;
hFile = CreateFile("c:\\lock.txt",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
bool lock_check = false;
lock_check = LockFile(hFile, 0, 0, 0xffffffff, 0xffffffff); // 파일 잠그기.
if(!lock_check) //현재 사용중 일 때 unlock될 때까지 계속 시도..
{
ShowMessage("현재 파일이 사용중입니다. 파일 사용이 끝날 때까지 대기합니다.");
while(!lock_check)
{
lock_check = LockFile(hFile, 0, 0, 0xffffffff, 0xffffffff);
Application->ProcessMessages();
}
}
ShowMessage("lock");
FILE * file = NULL;
file = fopen("c:\\lock_test.txt", "wb");
if (file == NULL)
return;
for(int i=0;i<10;i++)
fprintf(file, "lock test\n");
Sleep(5000); //테스트를 위해 넣어주었습니다.
fclose(file);
UnlockFile(hFile, 0, 0, 0xffffffff, 0xffffffff);
ShowMessage("unlock");
CloseHandle(hFile);
간단하게 프로젝트에 버튼 하나 놓고 버튼 이벤트에 위 소스를 넣어두고 프로그램 두 개 띄어놓은 상태에서 테스트해보면 될 꺼예요...
그럼..
p.s 예전에 잠깐 테스트를 하고 올렸는데 이제와서 다시 사용하려고 해보니 lock걸린 파일은 쓰질 못하더군요..ㅡ.ㅜ 그래서 쓰는 파일은 다른 파일로 고쳤습니다. 죄송합니다..
|