dio_fcntl
(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5)
dio_fcntl — Exécute une fonction fichier de langage C
Description
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
.
Liste de paramètres
-
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 valeurF_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 parargs
, qui peut êtreO_APPEND
,O_NONBLOCK
ouO_ASYNC
. Pour utiliserO_ASYNC
vous aurez besoin de l'extension PCNTL.
-
-
args
-
args
est un tableau associatif lorsquecmd
vautF_SETLK
ouF_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
-
whence : l_start est relatif à : peut être
SEEK_SET
,SEEK_END
etSEEK_CUR
-
type : type de verrou. peut être
F_RDLCK
(verrou en lecture),F_WRLCK
(verrou en écriture) ouF_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"; } dio_close($fd); ?>
Notes
Note: Cette fonction n'est pas implémentée sous Windows.