(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.
fdO descritor de arquivo retornado por dio_open().
cmdPode 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.