CakeFest 2024: The Official CakePHP Conference

dio_fcntl

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

dio_fcntlRealiza uma chamada à função fcntl da biblioteca C em fd

Descrição

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

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 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 você precisará usar PCNTL (extensão).

args

args é um array associativo, quando cmd é F_SETLK ou F_SETLLW, com as seguintes chaves:

  • start - offset onde a trava começa

  • length - tamanho da área travada. Zero significa até o final do arquivo

  • whence - Onde l_start é relativo a: pode ser SEEK_SET, SEEK_END e SEEK_CUR

  • type - tipo de trava: pode ser F_RDLCK (trava de leitura), F_WRLCK (trava de escrita) ou F_UNLCK (destrava)

Valor Retornado

Retorna o resultado da chamada C.

Exemplos

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 trancado
echo "The lock can not be cleared. It is held by someone else.";
} else {
echo
"Lock successfully set/cleared";
}

dio_close($fd);
?>

Notas

Nota: Esta função não foi implementada em plataformas Windows.

add a note

User Contributed Notes 1 note

up
-8
Guillermo Prandi
10 years ago
Actually, there's a small typo in the above docs. The parameter for where l_start is relative to is actually "whence" and not "wenth" like stated.
To Top