Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       truncate, ftruncate - trunchiază un fișier la o lungime specificată

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       int truncate(const char *path, off_t length);
       int ftruncate(int fd, off_t length);

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

       truncate():
           _XOPEN_SOURCE >= 500
               || /* Începând cu glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
               || /* glibc <= 2.19: */ _BSD_SOURCE

       ftruncate():
           _XOPEN_SOURCE >= 500
               || /* începând cu glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L
               || /* glibc <= 2.19: */ _BSD_SOURCE

DESCRIERE

       Funcțiile  truncate()  și ftruncate() fac ca fișierul obișnuit numit de path sau la care face referire fd
       să fie trunchiat la o dimensiune de exact length octeți.

       Dacă fișierul a fost anterior mai mare decât această dimensiune, datele suplimentare sunt pierdute.  Dacă
       fișierul a fost anterior mai scurt, acesta este extins, iar partea extinsă este  citită  ca  octeți  nuli
       („\0”).

       Indicatorul de poziție al fișierului nu este modificat.

       Dacă dimensiunea s-a modificat, câmpurile st_ctime și st_mtime (respectiv, ora ultimei schimbări de stare
       și  ora  ultimei  modificări;  a  se  vedea  inode(7))  pentru  fișier sunt actualizate, iar biții de mod
       set-user-ID și set-group-ID pot fi șterși.

       Cu ftruncate(), fișierul trebuie să fie deschis pentru scriere; cu truncate(), fișierul trebuie să  poată
       fi scris.

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-IEȘIRE

       Pentru truncate():

       EACCES Permisiunea de căutare este refuzată pentru o componentă a prefixului rutei, sau fișierul numit nu
              poate fi scris de către utilizator; (a se vedea și path_resolution(7).)

       EFAULT Argumentul path indică în afara spațiului de adrese alocat procesului.

       EFBIG  Argumentul length este mai mare decât dimensiunea maximă a fișierului. (XSI)

       EINTR  În timp ce era blocat în așteptarea finalizării, apelul  a  fost  întrerupt  de  un  gestionar  de
              semnal; a se vedea fcntl(2) și signal(7).

       EINVAL Argumentul length este negativ sau mai mare decât dimensiunea maximă a fișierului.

       EIO    A apărut o eroare de In/Ieș la actualizarea nodului-i.

       EISDIR Fișierul numit este un director.

       ELOOP  S-au întâlnit prea multe legături simbolice la conversia numelui de rută.

       ENAMETOOLONG
              O  componentă  a unui nume de rută a depășit 255 de caractere sau un nume de rută întreg a depășit
              1023 de caractere.

       ENOENT Fișierul numit nu există.

       ENOTDIR
              O componentă a prefixului de rută nu este un director.

       EPERM  Sistemul de fișiere subiacent nu acceptă extinderea unui fișier dincolo de dimensiunea sa curentă.

       EPERM  Operația a fost împiedicată de o sigilare de fișier; a se vedea fcntl(2).

       EROFS  Fișierul numit se află pe un sistem de fișiere numai-pentru-citire.

       ETXTBSY
              Fișierul este un fișier executabil care este în curs de execuție.

       Pentru ftruncate() se aplică aceleași erori, dar în loc de lucruri care pot fi greșite cu path, avem acum
       lucruri care pot fi greșite cu descriptorul de fișier, fd:

       EBADF  descriptor-fișier nu este un descriptor de fișier valid.

       EBADF sau EINVAL
              fd nu este deschis pentru scriere.

       EINVAL fd nu face referire la un fișier obișnuit sau la un obiect de memorie partajată POSIX.

       EINVAL sau EBADF
              Descriptorul de fișier fd  nu  este  deschis  pentru  scriere.   POSIX  permite,  iar  aplicațiile
              portabile ar trebui să gestioneze, ambele erori pentru acest caz; (Linux produce EINVAL).

VERSIUNI

       Detaliile  din  DESCRIERE  sunt  pentru  sistemele  compatibile XSI.  Pentru sistemele neconforme cu XSI,
       standardul POSIX permite două comportamente pentru ftruncate()  atunci  când  length  depășește  lungimea
       fișierului  (rețineți  că  truncate()  nu este specificată deloc într-un astfel de mediu): fie returnarea
       unei erori, fie extinderea fișierului. Ca majoritatea implementărilor UNIX, Linux  respectă  cerința  XSI
       atunci  când  are  de-a  face  cu  sisteme  de fișiere native. Cu toate acestea, unele sisteme de fișiere
       non-native nu permit ca truncate() și ftruncate() să fie utilizate pentru a extinde un fișier dincolo  de
       lungimea sa curentă: un exemplu notabil pe Linux este VFAT.

       Pe  unele  arhitecturi  pe  32  de biți, semnătura de apelare pentru aceste apeluri de sistem diferă, din
       motivele descrise în syscall(2).

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001, 4.4BSD, SVr4 (a apărut prima dată în 4.2BSD).

       Apelurile de sistem originale Linux truncate() și ftruncate() nu au  fost  concepute  pentru  a  gestiona
       decalaje  de  fișiere  mari.  În  consecință,  Linux  2.4  a  adăugat apelurile de sistem truncate64() și
       ftruncate64() care gestionează fișiere mari.  Cu  toate  acestea,  aceste  detalii  pot  fi  ignorate  de
       aplicațiile care utilizează glibc, ale cărui funcții de învăluire utilizează în mod transparent apelurile
       de sistem mai recente, acolo unde acestea sunt disponibile.

NOTE

       ftruncate()  poate fi, de asemenea, utilizat pentru a defini dimensiunea unui obiect de memorie partajată
       POSIX; consultați shm_open(3).

ERORI

       O eroare a fișierului de antet în glibc 2.12 însemna că valoarea minimă a _POSIX_C_SOURCE necesară pentru
       a expune declarația ftruncate() era 200809L în loc de 200112L.  Acest lucru a fost remediat în versiunile
       glibc ulterioare.

CONSULTAȚI ȘI

       truncate(1), open(2), stat(2), path_resolution(7)

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                   15 iunie 2024                                      truncate(2)