tail head cat sleep
QR code linking to this page

Man page  — FLOCK

명칭

flock – 열린 파일상의 문의형 락을 적용 또는 제거한다

내용

프로그램 라이브러리

Standard C Library (libc, -lc)

서식

#include <sys/file.h>

#define Ta LOCK_SH Ta Ta 0x01 Ta       /* 공유 파일 락 */
#define Ta LOCK_EX Ta Ta 0x02 Ta       /* 배타적 파일 락 */
#define Ta LOCK_NB Ta Ta 0x04 Ta       /* 잠글 때 블록 하지 않는다 */
#define Ta LOCK_UN Ta Ta 0x08 Ta       /* 파일을 언로크 한다 */
int
flock(int fd, int operation);

해설

flock() (은)는, 파일 기술자 fd 에 대응하는 파일상의 문의형 락을 적용 또는 제거합니다. 락을 적용하려면 , 파라미터의 operation LOCK_SH 또는 LOCK_EX 의 어느쪽이든과 필요하면 LOCK_NB (을)를 더해 지정합니다. 기존의 락을 언로크 하는 경우는 operation (을)를 LOCK_UN (으)로 해 주세요.

문의형 락은, 협동하는 프로세스간에서의 일관한 파일 조작을 가능하게 합니다만, 파일의 일관성을 프로텍션한다 물건이 아닙니다 (즉, 프로세스는 문의형 락을 사용하지 않고 파일에 액세스 할 수 있으므로, 그 결과 일관성이 없어질 가능성이 있습니다).

락 메카니즘은 공유 락과 배타적 락이라고 하는 2 개의 타입의 락을 제공합니다. 언제라도 복수의 공유 락을 1 개의 파일에 적용할 수 있습니다. 그러나, 동시에 1 개의 파일에 복수의 배타적 락, 또는 공유 락과 배타적 락의 양쪽 모두를 적용할 수 없습니다.

적절한 락의 타입을 지정하는 것만으로, 공유 락은 배타적 락에 업그레이드 할 수 있어 배타적 락을 공유 락에 다운 그레이드 할 수 있습니다. 그 결과적으로 전의 락은 해방되어 새로운 락이 적용됩니다 (다른 프로세스가 락을 취득해 해방한 후일지도 모릅니다).

이미 락 되고 있는 오브젝트에 대해 락을 요구하면(자), 락을 획득할 수 있을 때까지 호출측은 블록 됩니다. 다만 LOCK_NB 하지만 operation 에 포함되는 경우는 블록 되지 않습니다. 대신에 호출이 실패해, 에러 EWOULDBLOCK 하지만 돌려주어집니다.

락은 파일에 걸칠 수 있는 것이며, 파일 기술자가 걸칠 수 있는 것이 아닙니다. 즉, dup(2) 또는 fork(2) 에 의해 복제된 파일 기술자는, 락의 복수의 인스턴스는 되지 않고 , 1 개의 락에의 복수의 참조가 됩니다. 어느 파일에 대한 락을 보관 유지하고 있는 프로세스가 포크 해, child process가 명시적으로 그 파일을 언로크 하는 경우, parent process는 그 락을 잃습니다.

락을 기다려 블록 하고 있는 프로세스는 시그널로 일으켜질지도 모릅니다.

반환값

The flock function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

에러

flock() 호출은 다음의 경우에 실패합니다:
[EWOULDBLOCK]
  파일은 벌써 LOCK_NB 옵션이 지정된 상태로 락 되고 있습니다.
[EBADF]
  인수 fd 하지만 무효인 기술자를 가리키고 있습니다.
[EINVAL]
  인수 fd 하지만 파일 이외의 오브젝트를 참조하고 있습니다.
[EOPNOTSUPP]
  인수 fd 하지만 파일의 락을 서포트하지 않는 오브젝트를 참조하고 있습니다.

관련 항목

close(2), dup(2), execve(2), fork(2), open(2)

역사

flock() 함수는 BSD 4.2 그리고 등장했습니다.

FLOCK (2) December 11, 1993

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

Some people open all the windows; wise wives welcome spring by moving the UNIX.