 |
dio_fcntl (PHP 4 >= 4.2.0, PHP 5 <= 5.0.4) dio_fcntl -- Esegue la funzione C fcntl su un descrittore di file Descrizionemixed 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_SETFL - 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); ?>
|
|
|  |