C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[310] 파일을 사용하기 전에 잠그고(lock) 해제하기(unlock)
Jun [hjuni11] 7426 읽음    2002-02-05 11:20
안녕하세요..

도움을 많이 받아 미력이나마 보탬이 되고자 올리네요...

    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걸린 파일은 쓰질 못하더군요..ㅡ.ㅜ 그래서 쓰는 파일은 다른 파일로 고쳤습니다. 죄송합니다..

+ -

관련 글 리스트
310 파일을 사용하기 전에 잠그고(lock) 해제하기(unlock) Jun 7426 2002/02/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.