Manuel PHP
Précédent |  | Suivant

# dio_fcntl

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.4)

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

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

## 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); ?>`

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