Scroll to navigation

truncate(2) System Calls Manual truncate(2)

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():

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).)
Argumentul path indică în afara spațiului de adrese alocat procesului.
Argumentul length este mai mare decât dimensiunea maximă a fișierului. (XSI)
Î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).
Argumentul length este negativ sau mai mare decât dimensiunea maximă a fișierului.
A apărut o eroare de In/Ieș la actualizarea nodului-i.
Fișierul numit este un director.
S-au întâlnit prea multe legături simbolice la conversia numelui de rută.
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.
Fișierul numit nu există.
O componentă a prefixului de rută nu este un director.
Sistemul de fișiere subiacent nu acceptă extinderea unui fișier dincolo de dimensiunea sa curentă.
Operația a fost împiedicată de o sigilare de fișier; a se vedea fcntl(2).
Fișierul numit se află pe un sistem de fișiere numai-pentru-citire.
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:

descriptor-fișier nu este un descriptor de fișier valid.
fd nu este deschis pentru scriere.
fd nu face referire la un fișier obișnuit sau la un obiect de memorie partajată POSIX.
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.

15 iunie 2024 Pagini de manual de Linux 6.9.1