CakeFest 2024: The Official CakePHP Conference

dio_fcntl

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

dio_fcntlBelirtilen dosya tanıtıcısı üzerinde komut çalıştırır

Açıklama

dio_fcntl(resource $dt, int $komut, mixed $bağımsız_değişkenler = ?): mixed

dio_fcntl() işlevi, dt dosya tanıtıcısı üzerinde komut ile belirtilen işlemi yapar. Bazı komutların gerektirdiği ek bağımsız değişkenler bağımsız_değişkenler bağımsız değişkeninde belirtilebilir.

Bağımsız Değişkenler

dt

dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

komut

Aşağıdaki işlemlerden biri belirtilebilir:

  • F_SETLK - Dosya kilidi tanımlar veya siler. Kilit başka bir süreç tarafından tutulmuşsa işlev -1 ile döner.

  • F_SETLKW - F_SETLK gibidir, farklı olarak, kilit başka bir süreç tarafından tutulmuşsa kilit serbest kalıncaya kadar bekler.

  • F_GETLK - Birileri kilidin tutulmasını engelliyorsa dio_fcntl() işlevi (aşağıda açıklandığı gibi) bir ilişkisel dizi ile döner. Hiçbir engelleme anahtarı yoksa "tür" olarak F_UNLCK atanır.

  • F_DUPFD - bağımsız_değişkenler değerine eşit veya büyük dosya tanıtıcılarından en küçük numaralısını bulur ve bunu döndürür.

  • F_SETFL - Dosya tanıtıcılarının seçeneklerini bağımsız_değişkenler ile belirtilen değere ayarlar; bunlar, O_APPEND, O_NONBLOCK veya O_ASYNC olabilir. O_ASYNC kullanmak için PCNTL eklentisini kullanmanız gerekir.

bağımsız_değişkenler

bağımsız_değişkenler bir ilişkisel dizi olup, komut olarak F_SETLK veya F_SETLLW belirtildiğinde aşağıdaki anahtarlar belirtilebilir:

  • start - kilidin başlangıç konumu

  • length - kilitli alanın boyu; sıfır, dosyanın sonuna kadar demektir.

  • whence - l_start'ın göreli olduğu yer: SEEK_SET, SEEK_END ve SEEK_CUR olabilir.

  • type - kilit türü: F_RDLCK (okuma kilidi), F_WRLCK (yazma kilidi) veya F_UNLCK (kilidi aç) olabilir.

Dönen Değerler

C çağrısının sonucu ile döner.

Örnekler

Örnek 1 - Bir kilidin atanması ve silinmesi

<?php

$fd
= dio_open('/dev/ttyS0', O_RDWR);

if (
dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
// dosya tanıtıcısı kilitli görünüyor
echo "Kilit kaldırılamadı. Başka bir süreç tarafından tutuluyor.";
} else {
echo
"Kilit başarıyla atandı/silindi";
}

dio_close($fd);
?>

Notlar

Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

add a note

User Contributed Notes 1 note

up
-8
Guillermo Prandi
10 years ago
Actually, there's a small typo in the above docs. The parameter for where l_start is relative to is actually "whence" and not "wenth" like stated.
To Top