|
답변 감사드립니다.
c에서 유닉스 명령어를 쓸 수 있는지 모르겠는데요.. lockf같은 유닉스 명령어가 먹히질 않는 것 같더군요...
그래서 api함수에 lockf같은 게 있나 해서 msdn을 찾아보았더니 lockfile(ex)가 있더라구요..
lockfile을 통해 파일을 lock/unlock할 수 있었습니다.
참고삼아 아래 간단한 소스 올립니다.
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)
{
ShowMessage("현재 파일이 사용중입니다. 파일 사용이 끝날 때까지 대기합니다.");
while(!lock_check)
{
lock_check = LockFile(hFile, 0, 0, 0xffffffff, 0xffffffff);
Application->ProcessMessages();
}
}
ShowMessage("lock");
FILE * file = NULL;
file = fopen("c:\\lock.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);
|