8.26 Direct IO
8 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Constantes pré-définies . Configuration à l'exécution . Types de ressources . dio_close ->dio_fcntl . dio_open . dio_read . dio_seek . dio_stat . dio_tcsetattr . dio_truncate . dio_write
|
8.26.8 dio_fcntl()Exécute une fonction fichier de langage C[ Exemples avec dio_fcntl ] PHP 4 >= 4.2.0, PHP 5 <= 5.0.4
mixed
dio_fcntl (
resource
fd
,
int
cmd
,
mixed
args
)
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.
|
-
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.
| 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); ?>
|
|