dio_fcntl

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_fcntl — fd에서 c 라이브러리 fcntl을 수행합니다.


설명

dio_fcntl(resource $fd, int $cmd, mixed $args = ?): mixed

dio_fcntl() 함수는 파일 설명자 fd에 대해 cmd에 의해 지정된 작업을 수행합니다. 일부 명령에는 추가 인수 args가 제공되어야 합니다.


매개변수

fd
dio_open()에 의해 반환된 파일 설명자.
cmd
다음 작업 중 하나일 수 있습니다.
  • F_SETLK - 잠금이 설정되거나 해제됩니다. 다른 사람이 잠금을 보유하고 있는 경우 dio_fcntl()은 -1을 반환합니다.
  • F_SETLKW - F_SETLK와 비슷하지만 다른 사람이 잠금을 보유하고 있는 경우 dio_fcntl()은 잠금이 해제될 때까지 기다립니다.
  • F_GETLK - dio_fcntl()은 다른 사람이 잠금을 방지하는 경우 연관 배열(아래 설명 참조)을 반환합니다. 방해 키가 없으면 "유형"이 F_UNLCK로 설정됩니다.
  • F_DUPFD - args보다 크거나 같은 가장 낮은 번호의 사용 가능한 파일 디스크립터를 찾아 반환합니다.
  • F_SETFL - 파일 설명자 플래그를 args로 지정된 값으로 설정합니다. 이는 O_APPEND, O_NONBLOCK 또는 O_ASYNC일 수 있습니다. O_ASYNC 를 사용하려면 PCNTL 확장을 사용해야 합니다.
args
argscmdF_SETLK 또는 F_SETLLW일 때 다음 키가 있는 연관 배열입니다.
  • start - 잠금이 시작되는 오프셋
  • length - 잠긴 영역의 크기. 0은 파일의 끝을 의미합니다
  • whence - 여기서 l_start는 다음을 기준으로 합니다. SEEK_SET, SEEK_ENDSEEK_CUR일 수 있습니다.
  • type - 잠금 유형: F_RDLCK(읽기 잠금), F_WRLCK(쓰기 잠금) 또는 F_UNLCK(잠금 해제)일 수 있습니다.

반환 값

C 호출의 결과를 반환합니다.


Examples

예제 #1 잠금 설정 및 해제

                  
<?php

$fd = dio_open('/dev/ttyS0', O_RDWR);

if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
   // the file descriptor appears locked
   echo "The lock can not be cleared. It is held by someone else.";
} else {
   echo "Lock successfully set/cleared";
}

dio_close($fd);
?>
                  
                

메모

참고: 이 함수는 Windows 플랫폼에서 구현되지 않습니다.