본문 바로가기

컴퓨터 공학 전공/시스템 프로그래밍

record lock

728x90

lock에는 대표적으로 두 가지가 존재한다. Writers’s lock: Exclusive lock으로 writing 하는 process 혹은 thread가 lock을 소유하면 다른 writer나 reader는 모두 writer lock을 반환할 때까지 기다려야 한다. Reader’s lock: Shared lock으로 다른 reader는 바로 진입이 가능하다. (writer는 기다려야 함)

File lock을 하는 대표적인 함수는 fcntl이다.

int fcntl (int fildes, int cmd, struct flock *lock)

  • fildes: file descriptor
  • cmd: command to do

cmd:

  • F_GETLK: 현재 LOCK을 반환한다
  • F_SETLK: LOCK을 바로 얻으려고 시도하는데 만약 사용중이라면 바로 error를 반환한다 (non-blocking)
  • F_SETLKW: LOCK을 바로 얻으려고 시도하는데 만약 사용중이라면 LOCK이 반환될 때까지 기다린다 (blocking)

fseek, fread, fwrite 등의 함수도 소개하면 좋겠지만 정리의 목적이 세부적인 함수들까지 소개하는 것이 아니므로 이 정도 선에서 마무리하겠다.

'컴퓨터 공학 전공 > 시스템 프로그래밍' 카테고리의 다른 글

Memory Mapped File  (0) 2020.04.01
IPC  (0) 2020.04.01
signal  (0) 2020.04.01
Pipe  (0) 2020.04.01
fork, wait, exit, exec  (0) 2020.03.31