dio_fcntl
(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5)
dio_fcntl — Lleva a cabo la función fcntl de la biblioteca C en el fichero fd
Descripción
La función dio_fcntl() realiza la operación
especificada por cmd sobre el descriptor de
fichero fd. Algunos comandos requieren que se
proporcionen parámetros adicionales en args.
Parámetros
-
fd -
Descriptor de fichero devuelto por dio_open().
-
cmd -
Puede ser una de las siguientes operaciones:
-
F_SETLK- Se asigna o quita el bloqueo. Si está bloqueado por otro proceso, dio_fcntl() devuelve -1. -
F_SETLKW- comoF_SETLK, pero en caso de que esté bloqueado por otro proceso, dio_fcntl() espera a que éste se libere. -
F_GETLK- dio_fcntl() devuelve un array asociativo (descrito más abajo) si algún proceso previene el bloqueo. Si no hubiera impedimento, se asignará la clave "type" aF_UNLCK. -
F_DUPFD- encuentra el número de descriptor más bajo disponible que sea igual o superior aargsy lo devuelve. -
F_SETFL- Establece al descriptor de fichero las banderas especificadas enargs, de entreO_APPEND,O_NONBLOCKoO_ASYNC. Para usarO_ASYNCdebe usarse la extensión PCNTL.
-
-
args -
argses un array asociativo, cuandocmdseaF_SETLKoF_SETLLW, con las siguientes claves:-
start - posición donde comienza el bloqueo
-
length - tamaño del area bloqueada. Cero significa hasta el final del fichero
-
whence - Desde dónde se contabiliza l_start: puede ser
SEEK_SET,SEEK_ENDySEEK_CUR -
type - tipo de bloqueo: puede ser
F_RDLCK(bloqueo de lectura),F_WRLCK(bloqueo de escritura) oF_UNLCK(desbloqueo)
-
Valores devueltos
Devuelve el resultado de la llamada a C.
Ejemplos
Ejemplo #1 Bloqueando y desbloqueando
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR);
if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
// parece el descriptor de fichero está bloqueado
echo "No se puede desbloquear. Pertenece a algún otro proceso.";
} else {
echo "Bloqueo/desbloqueo con éxito";
}
dio_close($fd);
?>
Notas
Nota: Esta función no está implementada en plataformas Windows.