(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 .
Note: Cette fonction n'est pas implémentée sous Windows.
La ressource de fichier retournée par dio_open() .
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 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 642. 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
);
?>