truncate(2)

NAVN
truncate, ftruncate - afkort en fil til angivet længde

BIBLIOTEK
C-standardbibliotek (libc, -lc)

SYNOPSIS
#include <unistd.h>

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

    Feature Test Macro Requirements for glibc (se feature_test_macros(7)):

truncate():
    _XOPEN_SOURCE >= 500
        || /* Siden glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
        || /* glibc <= 2.19: */ _BSD_SOURCE

ftruncate():
    _XOPEN_SOURCE >= 500
        || /* Siden glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L
        || /* glibc <= 2.19: */ _BSD_SOURCE

BESKRIVELSE
Funktionerne truncate() og ftruncate() får filen navngivet af sti eller refereret til af fd til at blive afkortet til en størrelse på præcis længde byte.

Hvis filen tidligere var større end den størrelse mistes de ekstra data. Hvis filen tidligere var kortere, så udvides den, og den udvidede del læses som null-byte ('\0').

Filforskydningen ændres ikke.

Hvis størrelsen ændrede sig så opdateres felterne st_ctime og st_mtime (respektivt, tid for sidste statusændring og tid for seneste ændring; se inode(7)) for filerne og tilstandsbit'ene set-user-ID og set-group-ID kan blive ryddet.

Med ftruncate() skal filen være åben for skrivning; med truncate() skal filen være skrivbar.

RETURVÆRDI
Ved succes returneres nul. Ved fejl returneres -1 og errno angives for at indikere fejlen.

FEJL
For truncate():

EACCES
    Søgerettighed er nægtet for en komponent for stipræfikset eller den navngivne fil er ikke skrivbar for brugeren. (Se også path_resolution(7)).

EFAULT
    Argumentet sti peger udenfor processens allokerede adresserum.

EFBIG
    Argumentet længde er større end den maksimale filstørrelse. (XSI)

ENOSPC
    Der er ikke nok plads tilbage på enheden til at udvide filstørrelsen til den angivne længde.

EINTR
    Mens blokeret og ventende på fuldførelse blev kaldet afbrudt af en signalhåndtering; se fcntl(2) og signal(7).

EINVAL
    Argumentet længde er negativt eller større end den maksimale filstørrelse.

EIO Der opstod en I/O-fejl under opdatering af iknuden.

EISDIR
    Den navngivne fil er en mappe.

ELOOP
    For mange symbolske henvisninger blev mødt under oversættelse af stinavnet.

ENAMETOOLONG
    En komponent af et stinavn er større end 255 tegn, eller et helt stinavn var større end 1.023 tegn.

ENOENT
    Den navngivne fil findes ikke.

ENOTDIR
    En komponent i stipræfikset er ikke en mappe.

EPERM
    Det underliggende filsystem understøtter ikke udvidelse af en fil udover dens nuværende størrelse.

EPERM
    Operationen blev forhindret af en filforsegling; se fcntl(2).

EROFS
    Den navngivne fil befinder sig på et skrivebeskyttet filsystem.

ETXTBSY
    Filen er en kørbar fil, der bliver afviklet.

For ftruncate() gælder de samme fejl, men i stedet for ting, der kan være galt med sti, så har vi nu ting, der kan være galt med fildeskriptoren, fd:

EBADF
    fd er ikke en gyldig filbeskrivelse.

EBADF eller EINVAL
    fd er ikke åben for skriving.

EINVAL
    fd refererer ikke en normal fil eller et POSIX-delt hukommelsesobjekt.

EINVAL eller EBADF
    Fildeskriptoren fd er ikke åben for skrivning. POSIX-rettigheder og flytbare programmer skal håndtere begge fejl i dette tilfælde. (Linux laver EINVAL).

VERSIONER
Detaljerne i DESCRIPTION er for XSI-overholdende systemer. For ikke-XSI-overholdende systemer tillader POSIX-standarden to opførelser for ftruncate() når længde er større end fillængden (bemærk at truncate() ikke er angivet overhovedet i sådan et miljø): returnerer hverken en fejl, eller udvider filen. Som de fleste UNIX-implementeringer, følger Linux XSI-kravet under håndtering af standardfilsystemer. Nogle ej standardfilsystemer tillader dog ikke at truncate() og ftruncate() bruges til at udvide en fil udover sin nuværende længde: et bemærkelsesværdigt eksempel på Linux er VFAT.

På nogle 32-bit arkitekturer er den kaldende signatur for disse systemkald anderledes, af årsagerne beskrevet i syscall(2).

STANDARDER
POSIX.1-2024.

HISTORIK
POSIX.1-2001, SVr4, 4.2BSD.

De oprindelige Linux-systemkald truncate() og ftruncate() blev ikke designet til at håndtere store filforskydninger. Som konsekvens tilføjet Linux 2.4 systemkaldene truncate64() og ftruncate64(), der håndterer store filer. Disse detaljer kan dog ignoreres af programmer, der bruger glibc, hvis omslagsfunktioner gennemsigtigt anvender de seneste systemkald, når de er tilgængelige.

NOTER
ftruncate() kan også bruges til at angive størrelsen for et POSIX-delt hukommelsesobjekt; se shm_open(3).

FEJL
En teksthovedfilfejl i glibc 2.12 betød at minimumsværdien for _POSIX_C_SOURCE krævede at vise erklæringen af ftruncate() var 200809L i stedet for 200112L. Dette blev rettet i senere glibc-versioner.

SE OGSÅ
truncate(1), open(2), stat(2), path_resolution(7)

OVERSÆTTELSE
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.