table of contents
| truncate(2) | System Calls Manual | truncate(2) |
NAVN¶
truncate, ftruncate - afkort en fil til angivet længde
BIBLIOTEK¶
Standard C library (libc, -lc)
SYNOPSIS¶
#include <unistd.h>
int truncate(const char *path, off_t length); int ftruncate(int fd, off_t length);
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)
- 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Ŷ
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 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.
| 29. oktober 2025 | Linux man-pages 6.17 |