Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


truncate(2) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |VERSIONS |STANDARDS |HISTORY |NOTES |BUGS |SEE ALSO |COLOPHON

truncate(2)                System Calls Manualtruncate(2)

NAME        top

       truncate, ftruncate - truncate a file to a specified length

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

#include <unistd.h>int truncate(const char *path, off_tlength);int ftruncate(intfd, off_tlength);   Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):truncate():           _XOPEN_SOURCE >= 500               || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L               || /* glibc <= 2.19: */ _BSD_SOURCEftruncate():           _XOPEN_SOURCE >= 500               || /* Since glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L               || /* glibc <= 2.19: */ _BSD_SOURCE

DESCRIPTION        top

       Thetruncate() andftruncate() functions cause the regular file       named bypath or referenced byfd to be truncated to a size of       preciselylength bytes.       If the file previously was larger than this size, the extra data       is lost.  If the file previously was shorter, it is extended, and       the extended part reads as null bytes ('\0').       The file offset is not changed.       If the size changed, then the st_ctime and st_mtime fields       (respectively, time of last status change and time of last       modification; seeinode(7)) for the file are updated, and the set-       user-ID and set-group-ID mode bits may be cleared.       Withftruncate(), the file must be open for writing; withtruncate(), the file must be writable.

RETURN VALUE        top

       On success, zero is returned.  On error, -1 is returned, anderrno       is set to indicate the error.

ERRORS        top

       Fortruncate():EACCESSearch permission is denied for a component of the path              prefix, or the named file is not writable by the user.              (See alsopath_resolution(7).)EFAULTThe argumentpath points outside the process's allocated              address space.EFBIGThe argumentlength is larger than the maximum file size.              (XSI)EINTRWhile blocked waiting to complete, the call was interrupted              by a signal handler; seefcntl(2) andsignal(7).EINVALThe argumentlength is negative or larger than the maximum              file size.EIOAn I/O error occurred updating the inode.EISDIRThe named file is a directory.ELOOPToo many symbolic links were encountered in translating the              pathname.ENAMETOOLONG              A component of a pathname exceeded 255 characters, or an              entire pathname exceeded 1023 characters.ENOENTThe named file does not exist.ENOTDIR              A component of the path prefix is not a directory.EPERMThe underlying filesystem does not support extending a file              beyond its current size.EPERMThe operation was prevented by a file seal; seefcntl(2).EROFSThe named file resides on a read-only filesystem.ETXTBSY              The file is an executable file that is being executed.       Forftruncate() the same errors apply, but instead of things that       can be wrong withpath, we now have things that can be wrong with       the file descriptor,fd:EBADFfd is not a valid file descriptor.EBADForEINVALfd is not open for writing.EINVALfd does not reference a regular file or a POSIX shared              memory object.EINVALorEBADF              The file descriptorfd is not open for writing.  POSIX              permits, and portable applications should handle, either              error for this case.  (Linux producesEINVAL.)

VERSIONS        top

       The details in DESCRIPTION are for XSI-compliant systems.  For       non-XSI-compliant systems, the POSIX standard allows two behaviors       forftruncate() whenlength exceeds the file length (note thattruncate() is not specified at all in such an environment): either       returning an error, or extending the file.  Like most UNIX       implementations, Linux follows the XSI requirement when dealing       with native filesystems.  However, some nonnative filesystems do       not permittruncate() andftruncate() to be used to extend a file       beyond its current length: a notable example on Linux is VFAT.       On some 32-bit architectures, the calling signature for these       system calls differ, for the reasons described insyscall(2).

STANDARDS        top

       POSIX.1-2008.

HISTORY        top

       POSIX.1-2001, 4.4BSD, SVr4 (first appeared in 4.2BSD).       The original Linuxtruncate() andftruncate() system calls were       not designed to handle large file offsets.  Consequently, Linux       2.4 addedtruncate64() andftruncate64() system calls that handle       large files.  However, these details can be ignored by       applications using glibc, whose wrapper functions transparently       employ the more recent system calls where they are available.

NOTES        top

ftruncate() can also be used to set the size of a POSIX shared       memory object; seeshm_open(3).

BUGS        top

       A header file bug in glibc 2.12 meant that the minimum value of_POSIX_C_SOURCErequired to expose the declaration offtruncate()       was 200809L instead of 200112L.  This has been fixed in later       glibc versions.

SEE ALSO        top

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

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17truncate(2)

Pages that refer to this page:truncate(1)fallocate(2)F_GETLEASE(2const)F_GET_SEALS(2const)F_NOTIFY(2const)fsync(2)getrlimit(2)io_uring_enter2(2)io_uring_enter(2)memfd_create(2)memfd_secret(2)mmap(2)syscall(2)syscalls(2)io_uring_prep_ftruncate(3)off_t(3type)shm_open(3)inode(7)inotify(7)landlock(7)shm_overview(7)signal-safety(7)xfs_io(8)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp