dio_fcntl

(PHP 4 >= 4.2.0, PECL)

dio_fcntl -- Realiza una operación del tipo fcntl de la librería de C sobre el descriptor de archivo indicado por el parámetro fd

Descripción

mixed dio_fcntl ( resource fd, int cmd [, mixed args] )

La función dio_fcntl() realiza las operaciones indicadas por el parámetro cmd sobre el descriptor fd. Algunas operaciones requieren argumentos indicados mediante el parámetro args.

Nota: Esta función no está implementada en plataformas Windows.

Lista de parámetros

fd

El descriptor de archivo devuelto por dio_open().

cmd

Puede indicar una de las siguientes operaciones:

  • F_SETLK - Crea o libera el bloqueo. Si alguien mantiene el bloqueo, la función dio_fcntl() devuelve -1.

  • F_SETLKW - es como F_SETLK, pero en este caso si alguien mantiene el bloqueo, la función dio_fcntl() espera hasta que el bloqueo se libera.

  • F_GETLK - dio_fcntl() devuelve una matriz asociativa (detallada más adelante) si alguien mantiene el bloqueo. Si el bloqueo ha sido liberado, el valor de "type" pasará a ser F_UNLCK.

  • F_DUPFD - determina el descriptor de archivo disponible con la numeración más baja posible que sea mayor o igual que la indicada por el parámetro args y devuelve ese descriptor.

  • F_SETFL - establece el valor de los flags del descriptor de archivo al valor especificado por el parámetro args, que puede ser O_APPEND, O_NONBLOCK o O_ASYNC. Para emplear O_ASYNC es necesario disponer de la extensión PCNTL.

args

args es una matriz asociativa cuando cmd es F_SETLK o F_SETLLW. Las claves de la matriz son las siguientes:

  • "start" - posición en la que comienza el bloqueo

  • "length" - longitud del área bloqueada. Un valor igual a cero significa el final del archivo..

  • "wenth" - posición respecto al que el valor start es relativo: puede ser SEEK_SET, SEEK_END y SEEK_CUR

  • "type" - tipo de bloqueo: puede ser F_RDLCK (bloqueo de solo lectura), F_WRLCK (bloqueo de escritura) or F_UNLCK (desbloqueo)

Valores retornados

Devuelve el mismo valor devuelto por la función de C.

Ejemplos

Ejemplo 1. Crear y liberar un bloqueo

<?php

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

if (
dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
   
// El descriptor del archivo está bloqueado
   
echo "El bloqueo no ha podido ser liberado.";
} else {
   echo
"El bloqueo ha sido creado/liberado con éxito";
}

dio_close($fd);
?>

Hosting by: hurra.com
Generated: 2007-01-26 18:00:40