[UNIX] 레코드 록킹(advisory locking)

Taegang Yun·2023년 12월 8일
1

Unix 프로그래밍

목록 보기
14/19

읽기 록 :

다른 프로세스들이 쓰기 록을 적용하지 못하게 함. 여러 프로세스들이 같은 구역에 동시에 읽기 록 가능

쓰기 록:

다른 프로세스들이 그 구역에 읽거나 쓰기 록을 할 수 없도록 함. 파일의 한 구역에는 한 순간에 하나의 쓰기 록 만이 존재.

int fcntl(int filedes, int cmd, struct flock *ldata);

  • filedes : 유효한 개방된 파일 기술자. 읽기 록인 경우 O_RDONLY나 O_RDWR로 개방, 쓰기 록을 위해서는 O_WRONLY나 O_RDWR로 개방

  • cmd:

    • F_GETLK : ldata를 통해 전달된 록 정보를 획득
    • F_SETLK : 파일에 록을 적용하고, 불가능하면 즉시 -1로 돌아옴
    • F_SETLKW : 파일에 록을 적용하고, 이것이 만약 다른 프로세스가 소유하고 있으면 수면
  • ldata

    • l_type : 록 유형
      • F_RDLCK : 읽기 록 적용
      • F_WRLCK : 쓰기 록 적용
      • F_UNLCK : 록 제거
    • l_whence : lseek와 동일
    • l_start : 바이트로 표시된 offset
    • l_len : 바이트 단위 세그먼트 크기
    • l_pid : 명령에 의해 설정
profile
언젠간 전문가가 되겠지

0개의 댓글