dio_fcntl
(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)
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-dessous) 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)
-
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);
?>
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-dio-fcntl.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.