.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Rickard E. Faith .\" Copyright 2002, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" FIXME Maybe document LOCK_MAND, LOCK_RW, LOCK_READ, LOCK_WRITE .\" which only have effect for SAMBA. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH flock 2 "8 februarie 2026" "Pagini de manual de Linux 6.18" .SH NUME flock \- aplică sau elimină o blocare consultativă pe un fișier deschis .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBint flock(int \fP\fIfd\fP\fB, int \fP\fIop\fP\fB);\fP .fi .SH DESCRIERE Aplică sau elimină o blocare consultativă pe fișierul deschis specificat de \fIfd\fP. Argumentul \fIop\fP este unul dintre următoarele: .RS 4 .TP 9 \fBLOCK_SH\fP Plasează o blocare partajată. Mai mult de un proces poate deține o blocare partajată pentru un anumit fișier la un moment dat. .TP \fBLOCK_EX\fP Plasează o blocare exclusivă. Un singur proces poate deține o blocare exclusivă pentru un anumit fișier la un moment dat. .TP \fBLOCK_UN\fP Elimină o blocare existentă deținută de acest proces. .RE .P Un apel la \fBflock\fP() se poate bloca dacă un alt proces deține o blocare incompatibilă. Pentru a face o cerere neblocantă, includeți \fBLOCK_NB\fP (printr\-un SAU logic) cu oricare dintre operațiile de mai sus. .P Un singur fișier nu poate avea simultan blocaje partajate și exclusive. .P Blocajele create de \fBflock\fP() sunt asociate cu o descriere de fișier deschis (a se vedea \fBopen\fP(2)). Aceasta înseamnă că descriptorii de fișier duplicați (creați, de exemplu, prin \fBfork\fP(2) sau \fBdup\fP(2)) se referă la același blocaj, iar acest blocaj poate fi modificat sau eliberat utilizând oricare dintre acești descriptori de fișier. În plus, blocajul este eliberat fie printr\-o operație explicită \fBLOCK_UN\fP asupra oricăruia dintre acești descriptori de fișier duplicat, fie atunci când toți acești descriptori de fișier au fost închiși. .P Dacă un proces utilizează \fBopen\fP(2) (sau similar) pentru a obține mai mult de un descriptor de fișier pentru același fișier, acești descriptori de fișier sunt tratați independent de \fBflock\fP(). O încercare de blocare a fișierului folosind unul dintre acești descriptori de fișier poate fi refuzată de o blocare pe care procesul apelant a plasat\-o deja printr\-un alt descriptor de fișier. .P Un proces poate deține un singur tip de blocare (partajată sau exclusivă) pe un fișier. Apelurile ulterioare \fBflock\fP() pe un fișier deja blocat vor converti un blocaj existent în noul mod de blocare. .P Blocajele create de \fBflock\fP() sunt păstrate în timpul unui \fBexecve\fP(2). .P O blocare partajată sau exclusivă poate fi plasată pe un fișier indiferent de modul în care a fost deschis fișierul. .SH "VALOAREA RETURNATĂ" În caz de succes, se returnează zero. În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEBADF\fP \fIfd\fP nu este un descriptor de fișier deschis. .TP \fBEINTR\fP Î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 \fBsignal\fP(7). .TP \fBEINVAL\fP \fIop\fP nu este valid. .TP \fBENOLCK\fP Nucleul a rămas fără memorie pentru alocarea înregistrărilor de blocare. .TP \fBEWOULDBLOCK\fP Fișierul este blocat și fanionul \fBLOCK_NB\fP a fost selectat. .SH VERSIUNI .\" E.g., according to the flock(2) man page, FreeBSD since at least 5.3 Începând cu Linux 2.0, \fBflock\fP() este implementat ca un apel de sistem de sine stătător în loc să fie emulat în biblioteca GNU C ca un apel către \fBfcntl\fP(2). Cu această implementare, nu există nicio interacțiune între tipurile de blocare plasate de \fBflock\fP() și \fBfcntl\fP(2), iar \fBflock\fP() nu detectează blocajul. Rețineți, totuși, că pe unele sisteme, cum ar fi BSD\-urile moderne, blocajele \fBflock\fP() și \fBfcntl\fP(2) \fIinteracționează\fP între ele. .SS "Detalii privind CIFS" Până la Linux 5.4, \fBflock\fP() nu este propagat prin SMB. Un fișier cu astfel de blocaje nu va apărea blocat pentru clienții de la distanță. .P Începând cu Linux 5.5, blocajele \fBflock\fP() sunt emulate cu blocări ale intervalului de octeți SMB pe întregul fișier. În mod similar cu NFS, aceasta înseamnă că blocajele \fBfcntl\fP(2) și \fBflock\fP() interacționează între ele. Un alt efect secundar important este că blocajele nu mai sunt consultative: orice IO pe un fișier blocat va eșua întotdeauna cu \fBEACCES\fP atunci când este efectuată de la un descriptor de fișier separat. Această diferență provine din proiectarea blocajelor în protocolul SMB, care oferă o semantică de blocare obligatorie. .P Semantica blocării la distanță și obligatorii poate varia în funcție de protocolul SMB, opțiunile de montare și tipul de server. Consultați \fBmount.cifs\fP(8) pentru informații suplimentare. .SH STANDARDE BSD. .SH ISTORIC 4.4BSD (apelul \fBflock\fP() a apărut pentru prima dată în 4.2BSD). O versiune a \fBflock\fP(), eventual implementată în termeni de \fBfcntl\fP(2), apare pe majoritatea sistemelor UNIX. .SS "Detalii privind NFS" Până la Linux 2.6.11, \fBflock\fP() nu bloca fișiere prin NFS (adică, domeniul de aplicare al blocajelor era limitat la sistemul local). În schimb, se poate utiliza blocarea intervalului de octeți \fBfcntl\fP(2), care funcționează pe NFS, având în vedere o versiune suficient de recentă de Linux și un server care acceptă blocarea. .P Începând cu Linux 2.6.12, clienții NFS acceptă blocajele \fBflock\fP() prin emularea lor ca blocări de interval de octeți \fBfcntl\fP(2) pe întregul fișier. Aceasta înseamnă că blocajele \fBfcntl\fP(2) și \fBflock\fP() \fIdo\fP interacționează între ele pe NFS. Aceasta înseamnă, de asemenea, că pentru a plasa o blocare exclusivă, fișierul trebuie să fie deschis pentru scriere. .P .\" commit 5eebde23223aeb0ad2d9e3be6590ff8bbfab0fc2 Începând cu Linux 2.6.37, nucleul acceptă un mod de compatibilitate care permite ca blocajele \fBflock\fP() (și, de asemenea, blocajele regiunii de octeți \fBfcntl\fP(2)) să fie tratate ca locale; a se vedea discuția despre opțiunea \fIlocal_lock\fP din \fBnfs\fP(5). .SH NOTE \fBflock\fP() plasează numai blocaje consultative; având în vedere permisiunile adecvate asupra unui fișier, un proces este liber să ignore utilizarea \fBflock\fP() și să efectueze I/O asupra fișierului. .P Blocajele \fBflock\fP() și \fBfcntl\fP(2) au semantici diferite cu privire la procesele bifurcate și \fBdup\fP(2). Pe sistemele care implementează \fBflock\fP() folosind \fBfcntl\fP(2), semantica lui \fBflock\fP() va fi diferită de cea descrisă în această pagină de manual. .P .\" Kernel 2.5.21 changed things a little: during lock conversion .\" it is now the highest priority process that will get the lock -- mtk Conversia unui blocaj (partajat în exclusiv sau viceversa) nu este garantată ca fiind atomică: blocajul existent este mai întâi eliminat, iar apoi se stabilește un nou blocaj. Între acești doi pași, o cerere de blocare în așteptare din partea unui alt proces poate fi acordată, rezultatul fiind fie blocarea conversiei, fie eșecul acesteia dacă a fost specificat \fBLOCK_NB\fP; (acesta este comportamentul BSD original și apare în multe alte implementări.) .P Eliberarea unui blocaj atunci când un descriptor de fișier este închis nu este secvențiată după toate efectele observabile ale \fBclose\fP(2). De exemplu, dacă un proces scrie un fișier în timp ce deține un blocaj exclusiv, apoi închide acel fișier, iar un alt proces blochează plasarea unui blocaj partajat pe acel fișier pentru a aștepta până când acesta este închis, se poate observa că un \fBexecve\fP(2) ulterior al acelui fișier eșuează cu \fBETXTBSY\fP, iar \fBumount\fP(2) al sistemului de fișiere subiacent eșuează cu \fBEBUSY\fP, ca și cum fișierul ar fi încă deschis în primul proces. .SH "CONSULTAȚI ȘI" \fBflock\fP(1), \fBclose\fP(2), \fBdup\fP(2), \fBexecve\fP(2), \fBfcntl\fP(2), \fBfork\fP(2), \fBopen\fP(2), \fBlockf\fP(3), \fBlslocks\fP(8) .P \fIDocumentation/filesystems/locks.rst\fP în arborele sursă al nucleului Linux .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .