Manuale PHP
Indietro |  | Avanti

# dio_fcntl

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

dio_fcntl -- Esegue la funzione C fcntl su un descrittore di file

## Descrizione

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

La funzione dio_fcntl() esegue le operazioni specificate dal parametro cmd sul descrittore di file fd. Qualora i comandi richiedano informazioni addizionali occorre valorizzare args con tali informazioni.

> Nota: Questa funzione non è implementata su piattaforme Windows

## Elenco dei parametri

fd

  Descrittore di file restituito da dio_open().

cmd

  Può indicare una delle seguenti operazioni:

  - `F_SETLK` - imposta o azzera un lock. Se il lock è impostato da un'altro processo la funzione dio_fcntl() restituisce -1.

  - `F_SETLKW` - come `F_SETLK`, ma nel caso in cui il lock sia impostato da un'altro processo la funzione dio_fcntl() attende sino a quando il blocco non viene rimosso.

  - `F_GETLK` - la dio_fcntl() restituisce un array associativo (come descritto precedentemente) se qualche altro processo impedisce il lock. Se non vi sono problemi la chiave "type" sarà impostata a `F_UNLCK`.

  - `F_DUPFD` - trova il più piccolo numero di descrittore di file disponibile che sia maggiore o uguale rispetto ad args e lo restituisce.

  - `F_SETF`L - Imposta i flag del descrittore di file al valore specificato da args. Tale valore può essere `O_APPEND`, `O_NONBLOCK` oppure `O_ASYNC`. Per utilizzare `O_ASYNC` occorre utilizzare l'estensione PCNTL.

args

  Il parametro args è un array associativo, nei casi in cui cmd è impostato a `F_SETLK` oppure a `F_SETLLW`, contiene le seguenti chiavi:

  - "start" - offset da cui comincia il lock

  - "length" - dimensione dell'area bloccata, zero significa fine file

  - "wenth" - a cosa l_start è relativo: può valere `SEEK_SET`, `SEEK_END` o `SEEK_CUR`

  - "type" - tipo di lock: può essere `F_RDLCK` (lock in lettura), `F_WRLCK` (lock in scrittura) oppure `F_UNLCK` (rimozione del lock)

## Valori restituiti

Restituisce il valore della chiamata C.

## Esempi

Esempio 1. Impostare e cancellare un lock

`<?php $fd = dio_open('/dev/ttyS0', O_RDWR); if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) { // the file descriptor appears locked echo "The lock can not be cleared. It is held by someone else."; } else { echo "Lock succesfully set/cleared"; } dio_close($fd); ?>`

Indietro | Partenza | Avanti
dio_close | Risali | dio_open