(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5)
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.
fd
La ressource de fichier retournée par dio_open().
cmd
Peut ê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-dessus) si un autre utilisateur
empêche la poste 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 égales à
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 vous aurez besoin de l'extension
PCNTL.
args
args est un tableau associatif lorsque
cmd vaut F_SETLK
ou F_SETLLW, 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
"wenth" : 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 sous Windows.