dio_fcntl

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

dio_fcntl — ExĂ©cute une fonction fichier de langage C

Description

function dio_fcntl(resource $fd, int $cmd, mixed $args = ?): mixed

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 pose 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 Ă©gaux Ă  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 il sera nĂ©cessaire d'utiliser l'extension PCNTL.

args

args est un tableau associatif lorsque cmd vaut F_SETLK ou F_SETLKW, 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 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 sur les plates-formes Windows.

add a note

User Contributed Notes

There are no user contributed notes for this page.