truncate(2) System Calls Manual truncate(2) NUME truncate, ftruncate - trunchiaza un fiier la o lungime specificata BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int truncate(const char *path, off_t length); int ftruncate(int fd, off_t length); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): truncate(): _XOPEN_SOURCE >= 500 || /* Incepand cu glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || /* glibc <= 2.19: */ _BSD_SOURCE ftruncate(): _XOPEN_SOURCE >= 500 || /* incepand cu glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L || /* glibc <= 2.19: */ _BSD_SOURCE DESCRIERE Funciile truncate() i ftruncate() fac ca fiierul obinuit numit de path sau la care face referire fd sa fie trunchiat la o dimensiune de exact length octei. Daca fiierul a fost anterior mai mare decat aceasta dimensiune, datele suplimentare sunt pierdute. Daca fiierul a fost anterior mai scurt, acesta este extins, iar partea extinsa este citita ca octei nuli (,,\0"). Indicatorul de poziie al fiierului nu este modificat. Daca dimensiunea s-a modificat, campurile st_ctime i st_mtime (respectiv, ora ultimei schimbari de stare i ora ultimei modificari; a se vedea inode(7)) pentru fiier sunt actualizate, iar biii de mod set-user-ID i set-group-ID pot fi teri. Cu ftruncate(), fiierul trebuie sa fie deschis pentru scriere; cu truncate(), fiierul trebuie sa poata fi scris. VALOAREA RETURNATA In caz de succes, se returneaza zero. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE Pentru truncate(): EACCES Permisiunea de cautare este refuzata pentru o componenta a prefixului rutei, sau fiierul numit nu poate fi scris de catre utilizator; (a se vedea i path_resolution(7).) EFAULT Argumentul path indica in afara spaiului de adrese alocat procesului. EFBIG Argumentul length este mai mare decat dimensiunea maxima a fiierului. (XSI) EINTR In timp ce era blocat in ateptarea finalizarii, apelul a fost intrerupt de un gestionar de semnal; a se vedea fcntl(2) i signal(7). EINVAL Argumentul length este negativ sau mai mare decat dimensiunea maxima a fiierului. EIO A aparut o eroare de In/Ie la actualizarea nodului-i. EISDIR Fiierul numit este un director. ELOOP S-au intalnit prea multe legaturi simbolice la conversia numelui de ruta. ENAMETOOLONG O componenta a unui nume de ruta a depait 255 de caractere sau un nume de ruta intreg a depait 1023 de caractere. ENOENT Fiierul numit nu exista. ENOTDIR O componenta a prefixului de ruta nu este un director. EPERM Sistemul de fiiere subiacent nu accepta extinderea unui fiier dincolo de dimensiunea sa curenta. EPERM Operaia a fost impiedicata de o sigilare de fiier; a se vedea fcntl(2). EROFS Fiierul numit se afla pe un sistem de fiiere numai-pentru-citire. ETXTBSY Fiierul este un fiier executabil care este in curs de execuie. Pentru ftruncate() se aplica aceleai erori, dar in loc de lucruri care pot fi greite cu path, avem acum lucruri care pot fi greite cu descriptorul de fiier, fd: EBADF descriptor-fiier nu este un descriptor de fiier valid. EBADF sau EINVAL fd nu este deschis pentru scriere. EINVAL fd nu face referire la un fiier obinuit sau la un obiect de memorie partajata POSIX. EINVAL sau EBADF Descriptorul de fiier fd nu este deschis pentru scriere. POSIX permite, iar aplicaiile portabile ar trebui sa 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 doua comportamente pentru ftruncate() atunci cand length depaete lungimea fiierului (reinei ca truncate() nu este specificata deloc intr-un astfel de mediu): fie returnarea unei erori, fie extinderea fiierului. Ca majoritatea implementarilor UNIX, Linux respecta cerina XSI atunci cand are de-a face cu sisteme de fiiere native. Cu toate acestea, unele sisteme de fiiere non-native nu permit ca truncate() i ftruncate() sa fie utilizate pentru a extinde un fiier dincolo de lungimea sa curenta: un exemplu notabil pe Linux este VFAT. Pe unele arhitecturi pe 32 de bii, semnatura de apelare pentru aceste apeluri de sistem difera, din motivele descrise in syscall(2). STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001, 4.4BSD, SVr4 (a aparut prima data in 4.2BSD). Apelurile de sistem originale Linux truncate() i ftruncate() nu au fost concepute pentru a gestiona decalaje de fiiere mari. In consecina, Linux 2.4 a adaugat apelurile de sistem truncate64() i ftruncate64() care gestioneaza fiiere mari. Cu toate acestea, aceste detalii pot fi ignorate de aplicaiile care utilizeaza glibc, ale carui funcii de invaluire utilizeaza in 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 partajata POSIX; consultai shm_open(3). ERORI O eroare a fiierului de antet in glibc 2.12 insemna ca valoarea minima a _POSIX_C_SOURCE necesara pentru a expune declaraia ftruncate() era 200809L in loc de 200112L. Acest lucru a fost remediat in versiunile glibc ulterioare. CONSULTAI I truncate(1), open(2), stat(2), path_resolution(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 truncate(2)