(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
dio_fcntl — Realiza uma chamada à função fcntl da biblioteca C em fd
A função dio_fcntl() realiza a
operação especificada por cmd
no descritor de arquivo
fd
. Alguns comandos exigem que
argumentos adicionais args
sejam fornecidos.
fd
O descritor de arquivo retornado por dio_open().
cmd
Pode ser uma das seguintes operações:
F_SETLK
- A trava é definida ou removida. Se a trava
estiver sendo mantida por outra pessoa, dio_fcntl() retorna
-1.
F_SETLKW
- semelhante a F_SETLK
,
mas caso a trava esteja sendo mantida por outra pessoa,
dio_fcntl() aguarda até que a trava seja liberada.
F_GETLK
- dio_fcntl()
retorna um array associativo (conforme descrito abaixo) se alguém mais
estiver impedindo a trava. Se não houver obstrução, a chave "type" será definida
como F_UNLCK
.
F_DUPFD
- encontra o menor número de descritor
de arquivo disponível maior ou igual a args
e os retorna.
F_SETFL
- Define as flags do descritor de arquivo para
o valor especificado por args
, que pode ser
O_APPEND
, O_NONBLOCK
ou
O_ASYNC
. Para usar O_ASYNC
,
é necessário usar a extensão
PCNTL.
args
args
é um array associativo, quando
cmd
é F_SETLK
ou
F_SETLLW
, com as seguintes chaves:
Retorna o resultado da chamada C.
Exemplo #1 Definindo e removendo uma trava
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR);
if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
// o descritor de arquivo parece estar travado
echo "A trava não pode ser removida. Está sendo usada por outra pessoa.";
} else {
echo "Trava definida/removida com sucesso.";
}
dio_close($fd);
?>
Nota: Esta função não foi implementada em plataformas Windows.