Provided by: manpages-ro-dev_4.26.0-1_all 

NUME
posix_fallocate - alocă spațiu pentru fișiere
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <fcntl.h>
int posix_fallocate(int fd, off_t offset, off_t len);
Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):
posix_fallocate():
_POSIX_C_SOURCE >= 200112L
DESCRIERE
Funcția posix_fallocate() asigură alocarea spațiului pe disc pentru fișierul la care face referire
descriptorul de fișier fd pentru octeții din intervalul care începe la offset și continuă pentru len
octeți. După un apel reușit la posix_fallocate(), se garantează că scrierile ulterioare pe octeți din
intervalul specificat nu vor eșua din cauza lipsei de spațiu pe disc.
Dacă dimensiunea fișierului este mai mică decât offset+len, atunci fișierul este mărit la această
dimensiune; în caz contrar, dimensiunea fișierului este lăsată neschimbată.
VALOAREA RETURNATĂ
posix_fallocate() returnează zero în caz de succes sau un număr de eroare în caz de eșec. Rețineți că
errno nu este definită.
ERORI-IEȘIRE
EBADF fd nu este un descriptor de fișier valid sau nu este deschis pentru scriere.
EFBIG offset+len depășește dimensiunea maximă a fișierului.
EINTR Un semnal a fost captat în timpul execuției.
EINVAL offset a fost mai mic decât 0, sau len a fost mai mic sau egal cu 0, sau sistemul de fișiere
subiacent nu acceptă operația.
ENODEV fd nu se referă la un fișier obișnuit.
ENOSPC Nu mai este suficient spațiu pe dispozitivul care conține fișierul la care se face referire prin
fd (descriptorul de fișier).
EOPNOTSUPP
Sistemul de fișiere care conține fișierul la care se face referire prin fd nu acceptă această
operație. Acest cod de eroare poate fi returnat de bibliotecile C care nu realizează emulația
prezentată în secțiunea AVERTISMENTE, cum ar fi musl libc.
ESPIPE fd se referă la o conductă.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
┌───────────────────┬───────────────────┬───────────────────────────────────────────────────────────────┐
│ Interfață │ Atribut │ Valoare │
├───────────────────┼───────────────────┼───────────────────────────────────────────────────────────────┤
│ posix_fallocate() │ Siguranța firelor │ MT-Safe (dar citiți secțiunea AVERTISMENTE) │
└───────────────────┴───────────────────┴───────────────────────────────────────────────────────────────┘
STANDARDE
POSIX.1-2008.
ISTORIC
glibc 2.1.94. POSIX.1-2001
POSIX.1-2008 spune că o implementare trebuie să dea eroarea EINVAL dacă len a fost 0, sau offset a fost
mai mic decât 0. POSIX.1-2001 spune că o implementare trebuie să dea eroarea EINVAL dacă len este mai mic
decât 0, sau offset a fost mai mic decât 0, și poate să dea eroarea dacă len este egal cu zero.
AVERTISMENTE
În implementarea glibc, posix_fallocate() este implementat utilizând apelul de sistem fallocate(2), care
este sigur pentru MT. În cazul în care sistemul de fișiere subiacent nu acceptă fallocate(2), atunci
operația este emulată cu următoarele avertismente:
• Emulația este ineficientă.
• Există o condiție de concurență în care scrierile simultane de la un alt fir sau proces ar putea fi
suprascrise cu octeți nuli.
• Există o condiție de concurență în care creșterile simultane ale dimensiunii fișierelor de către un
alt fir sau proces ar putea avea ca rezultat un fișier a cărui dimensiune este mai mică decât cea
așteptată.
• Dacă fd a fost deschis cu fanioanele O_APPEND sau O_WRONLY, funcția eșuează cu eroarea EBADF.
În general, emulația nu este sigură pentru MT. În Linux, aplicațiile pot utiliza fallocate(2) dacă nu pot
tolera avertismentele emulației. În general, acest lucru este recomandat numai dacă aplicația
intenționează să încheie operația în cazul în care se returnează EOPNOTSUPP, altfel aplicația însăși va
trebui să implementeze o soluție de rezervă cu aceleași probleme ca și emulația furnizată de glibc.
CONSULTAȚI ȘI
fallocate(1), fallocate(2), lseek(2), posix_fadvise(2)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută 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.
Pagini de manual de Linux 6.9.1 16 iunie 2024 posix_fallocate(3)