(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
dio_fcntl â ExĂ©cute une fonction fichier de langage C
dio_fcntl() exécute l'opération
cmd sur le fichier représenté par la
ressource fd. Certaines commandes demandent
des arguments supplémentaires qui sont fournis dans l'argument
args.
fdLa ressource de fichier retournée par dio_open().
cmdPeut ĂȘtre une de ces opĂ©rations suivantes :
F_SETLK : le verrou est posé ou levé. Si le
verrou appartient Ă un autre utilisateur, dio_fcntl()
retourne -1.
F_SETLKW : identique Ă
F_SETLK, mais si le verrou appartient Ă quelqu'un
d'autre, dio_fcntl() attend la levée du verrou.
F_GETLK : dio_fcntl() retourne
un tableau associatif (comme décrit ci-dessous) si un autre utilisateur
empĂȘche la pose d'un verrou. S'il n'y a aucun empĂȘchement,
l'entrée "type" prendra la valeur F_UNLCK.
F_DUPFD : trouve les numéros de ressource de fichier
les plus petits, disponibles, infĂ©rieurs ou Ă©gaux Ă
args et les retourne.
F_SETFL : configure les descripteurs de fichier
Ă la valeur spĂ©cifiĂ©e par args, qui peut ĂȘtre
O_APPEND, O_NONBLOCK ou
O_ASYNC. Pour utiliser
O_ASYNC il sera nécessaire d'utiliser l'extension
PCNTL.
args
args est un tableau associatif lorsque
cmd vaut F_SETLK
ou F_SETLKW, avec les entrées suivantes :
start : offset de début de verrou
length : taille de la surface verrouillée. Zéro indique la fin
du fichier
whence : l_start est relatif Ă : peut ĂȘtre
SEEK_SET, SEEK_END et
SEEK_CUR
type : type de verrou. peut ĂȘtre
F_RDLCK (verrou en lecture),
F_WRLCK (verrou en écriture) ou
F_UNLCK (déverrouillage)
Retourne le résultat d'un appel en C.
Exemple #1 Positionnement et suppression d'un verrou
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR);
if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
// le descripteur de fichier semble verrouillé
echo "Le verrou n'a pu ĂȘtre effacĂ©. Il a Ă©tĂ© posĂ© par quelqu'un d'autre.";
} else {
echo "Le verrou a été défini/verrouillé avec succÚs";
}
dio_close($fd);
?>Note: Cette fonction n'est pas implémentée sur les plates-formes Windows.