dio_fcntl
(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
dio_fcntl — Realiza uma chamada à função fcntl da biblioteca C em fd
Descrição
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.
Parâmetros
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 aF_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 comoF_UNLCK
. -
F_DUPFD
- encontra o menor número de descritor de arquivo disponível maior ou igual aargs
e os retorna. -
F_SETFL
- Define as flags do descritor de arquivo para o valor especificado porargs
, que pode serO_APPEND
,O_NONBLOCK
ouO_ASYNC
. Para usarO_ASYNC
, é necessário usar a extensão PCNTL.
-
args
-
args
é um array associativo, quandocmd
éF_SETLK
ouF_SETLLW
, com as seguintes chaves:
Valor Retornado
Retorna o resultado da chamada C.
Exemplos
Example #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);
?>
Notas
Note: Esta função não foi implementada em plataformas Windows.