2013-10-20 4 views
3

나는 약 flock을 읽고 있었다. 이 예가 다음과 같습니다.
flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
이 호출은 차단 호출입니다. 따라서 잠금 장치가 이미 해제되어 있으면 호출 차단됩니다.
호출이 반환되면 잠금이 부여된다고 가정합니다. 언제 die이 발생합니까?flock에 대한 블로킹 호출이 언제 실패합니까?

답변

6

flock은 같은 이름의 시스템 호출을위한 래퍼입니다. $!은 시스템에 의해 설정됩니다. 따라서 시스템 설명서의 답변을 참조하십시오.

  • EBADFman 2 flock에 따라 내 시스템에서

    , : fd가 열려진 파일 기술자가 아니다.

  • EINTR : 잠금을 획득하기 위해 대기하는 동안 처리기가 포착 한 신호가 전달되어 통화가 중단되었습니다. 신호 (7) 참조.

  • EINVAL : operation은 유효하지 않습니다.

  • ENOLCK : 커널에서 잠금 레코드를 할당하기 위해 메모리가 부족합니다.

  • EWOULDBLOCK : 파일이 잠겨 있고 LOCK_NB 플래그가 선택되었습니다.