dio_close
dio_open
Direct IO Functions
PHP Manual

# dio_fcntl

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

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` .

> Note: 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

Example #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);
?>`

dio_close
dio_open
Direct IO Functions
PHP Manual