Manuel PHP
Précédent |  | Suivant

# dio_fcntl

(PHP 4 >= 4.2.0, PHP 5)

dio_fcntl -- Exécute une fonction fichier de langage C

## Description

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.

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)

cmd peut être l'une des 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() attent 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 aucune 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.

Exemple 1. Définition et effacement 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); ?>`

> Note : Cette fonction n'est pas implémentée sous Windows.

Précédent | Sommaire | Suivant
dio_close | Niveau supérieur | dio_open