Scroll to navigation

lockf(3) Library Functions Manual lockf(3)

NUME

lockf - aplică, testează sau elimină o blocare POSIX pe un fișier deschis

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <unistd.h>
int lockf(int fd, int cmd, off_t len);

Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

lockf():


_XOPEN_SOURCE >= 500
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIERE

Aplică, testează sau elimină un blocaj POSIX pe o secțiune a unui fișier deschis. Fișierul este specificat prin fd, un descriptor de fișier deschis pentru scriere, acțiunea prin cmd, iar secțiunea este formată din pozițiile de octeți pos..pos+len-1 dacă len este pozitiv și pos-len. pos-1 dacă len este negativ, unde pos este poziția curentă a fișierului, iar dacă len este zero, secțiunea se extinde de la poziția curentă a fișierului până la infinit, cuprinzând pozițiile prezente și viitoare de sfârșit de fișier. În toate cazurile, secțiunea se poate extinde dincolo de sfârșitul curent al fișierului.

În Linux, lockf() este doar o interfață peste blocarea fcntl(2). Multe alte sisteme implementează lockf() în acest mod, dar rețineți că POSIX.1 lasă nespecificată relația dintre blocările lockf() și fcntl(2). O aplicație portabilă ar trebui probabil să evite amestecarea apelurilor la aceste interfețe.

Operațiile valide sunt prezentate mai jos:

Stabilește o blocare exclusivă pe secțiunea specificată a fișierului. Dacă această secțiune (sau o parte a acesteia) este deja blocată, apelul se blochează până la eliberarea blocării anterioare. În cazul în care această secțiune se suprapune peste o secțiune blocată anterior, ambele sunt fuzionate. Blocajele de fișier sunt eliberate imediat ce procesul care deține blocajele închide un descriptor de fișier pentru acest fișier. Un proces copil nu moștenește aceste blocaje.
Același lucru ca F_LOCK, dar apelul nu se blochează niciodată și returnează o eroare dacă fișierul este deja blocat.
Deblochează secțiunea indicată din fișier. Acest lucru poate face ca o secțiune blocată să fie împărțită în două secțiuni blocate.
Testează blocarea: returnează 0 dacă secțiunea specificată este deblocată sau blocată de acest proces; returnează -1, stabilește errno la EAGAIN (EACCES pe alte sisteme), dacă un alt proces deține o blocare.

VALOAREA RETURNATĂ

În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI

Fișierul este blocat și a fost specificat F_TLOCK sau F_TEST, sau operațiunea este interzisă deoarece fișierul a fost plasat în memorie de un alt proces.
fd nu este un descriptor de fișier deschis; sau cmd este F_LOCK sau F_TLOCK și fd nu este un descriptor de fișier inscriptibil.
Comanda a fost F_LOCK și această operație de blocare ar fi provocat un blocaj.
În timp ce aștepta să obțină un blocaj, apelul a fost întrerupt de livrarea unui semnal capturat de un gestionar; a se vedea signal(7).
A fost specificată o operație nevalidă în cmd.
Prea multe blocări de segment deschise, tabelul de blocare este plin.

ATRIBUTE

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
lockf() Siguranța firelor MT-Safe

STANDARDE

POSIX.1-2001, POSIX.1-2008, SVr4.

CONSULTAȚI ȘI

fcntl(2), flock(2)

locks.txt și mandatory-locking.txt în directorul sursă al nucleului Linux Documentation/filesystems (pe nucleele mai vechi, aceste fișiere se află direct sub directorul Documentation, iar mandatory-locking.txt se numește mandatory.txt).

TRADUCERE

Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

5 februarie 2023 Pagini de manual de Linux 6.03