Documentación offline PHP master

dio_fcntl

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

dio_fcntl

Lleva a cabo la función fcntl de la biblioteca C en el fichero fd

Descripción#

dio_fcntl(resource $fd, int $cmd, [mixed $args]): mixed
```php

La función `dio_fcntl` realiza la operación especificada por `cmd` sobre el descriptor de fichero `fd`. Algunos comandos requieren que se proporcionen parámetros adicionales en `args`.

## Parámetros

`fd`  
Descriptor de fichero devuelto por `dio_open`.

`cmd`  
Puede ser una de las siguientes operaciones:

- `F_SETLK` - Se asigna o quita el bloqueo. Si está bloqueado por otro proceso, `dio_fcntl` devuelve -1.

- `F_SETLKW` - como `F_SETLK`, pero en caso de que esté bloqueado por otro proceso, `dio_fcntl` espera a que éste se libere.

- `F_GETLK` - `dio_fcntl` devuelve un array asociativo (como se describe a continuación) si algún proceso previene el bloqueo. Si no hubiera impedimento, se asignará la clave "type" a `F_UNLCK`.

- `F_DUPFD` - encuentra el número de descriptor más bajo disponible que sea igual o superior a `args` y lo devuelve.

- `F_SETFL` - Establece al descriptor de fichero las banderas especificadas en `args`, de entre `O_APPEND`, `O_NONBLOCK` o `O_ASYNC`. Para usar `O_ASYNC` debe usarse la extensión [PCNTL](#ref.pcntl).

`args`  
`args` es un array asociativo, cuando `cmd` sea `F_SETLK` o `F_SETLKW`, con las siguientes claves:

- `start` - posición donde comienza el bloqueo

- `length` - tamaño del area bloqueada. Cero significa hasta el final del fichero

- `whence` - Desde dónde se contabiliza l_start: puede ser `SEEK_SET`, `SEEK_END` y `SEEK_CUR`

- `type` - tipo de bloqueo: puede ser `F_RDLCK` (bloqueo de lectura), `F_WRLCK` (bloqueo de escritura) o `F_UNLCK` (desbloqueo)

## Valores devueltos

Devuelve el resultado de la llamada a C.

## Ejemplos

Bloqueando y desbloqueando
F_WRLCK)) == -1) { // parece el descriptor de fichero está bloqueado echo "No se puede desbloquear. Pertenece a algún otro proceso."; } else { echo "Bloqueo/desbloqueo con éxito"; } dio_close($fd); ?>

```php

Notas#

[!NOTE] Esta función no está implementada en las plataformas Windows.