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.
Note : Cette fonction n'est pas
implémentée sous Windows.
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)
Valeurs de retour
Retourne le résultat d'un appel en C.
Exemples
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"; }