FLOCK(2)

이름
flock - 열려진 파일에 권고(advisory) 잠금을 적용하거나 제거한다.

사용법
#include <sys/file.h>

int flock(int fd, int operation)

설명
열려진 파일에 권고 잠금을 적용하거나 제거한다. 파일은 fd 로 지정된다. 유효한 연산은 다음과 같다:

    LOCK_SH
        공유(shared) 잠금. 한개 이상의 프로세스들은 주어진 시간에 주어진 파일에 대한 공유 잠금을 할수 있다.

    LOCK_EX
        배타(exclusive) 잠금. 단지 한개의 프로세스만이 주어진 시간에 주어진 파일에 대해 배타 잠금을 할수 있다.

    LOCK_UN
        잠금을 푼다.

    LOCK_NB
        잠금일 때 블럭하지 않는다. 다른 연산과 함께 or에 의해 지정된다.

한 파일에 동시에 공유 잠금과 배타 잠금을 할 수 없다. 파일은 파일 기술자에 대해 잠금이 일어나는 것이 아니라, inode에 대해 잠금이 된다. 그래서, dup(2)와 fork(2)는 중복된 잠금을 만들지 않는다.

반환값
성공시, 0이 리턴된다. 에러시, -1이 리턴되며, errno는 적당한 값으로 설정된다.

에러

EWOULDBLOCK
    파일은 잠겨 있고 LOCK_NB 플래그가 선택되었다.

호환
4.4BSD (flock(2)은 4.2BSD에서 처음으로 나타났다).

주의
flock(2)은 NFS에 있는 파일을 잠금을 하지 않는다. 대신에 fcntl(2)를 사용해라: 이 시스템 콜은 최신 버전이고 서버가 잠금을 지원한다면 NFS에서도 작동한다.

flock(2)과 fcntl(2) 잠금은 생성된 프로세스와 dup(2)에 대해서 다른 의미를 갖는다.

관련 항목
open(2), close(2), dup(2), execve(2), fcntl(2), fork(2). /usr/src/linux/Documentation 안에 locks.txt와 mandatory.txt이 있다.

역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 5월 1일