dio_close
dio_open
Fonctions Direct IO
PHP Manual

# dio_fcntl

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.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`.

### 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 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)

### 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.

dio_close
dio_open
Fonctions Direct IO
PHP Manual